azure - 如何使用 EventGrids BlobCreated 事件数据中的 URL 获取 Blob 的路径?

标签 azure url path azure-logic-apps azure-blob-storage

我正在使用逻辑应用创建一个工作流,每次创建新的 blob 时都会触发该工作流。作为触发器,我处理 EventGrids BlobCreated 事件。事件正文中的数据为我提供了 blob 的完整 URL,因此我有一个完整的绝对 URL。接下来,我使用获取 Blob 内容 操作来获取 Blob 的内容。据我所知,此操作需要 Blob ID 或路径作为输入。

现在问题来了。我正在使用 uriPath 函数将 URL 转换为路径,但它似乎不支持某些字符(例如 ^)。使用 encodeURIComponent 对 URL 进行编码没有帮助。

在这两种情况下我都会收到错误:

The template language function 'uriPath' expects its parameter to be a well-formed absolute URI

如果没有任何特殊字符,则不会发生这种情况。这似乎有问题,因为允许创建带有特殊字符(如 ^)的 blob。

还有其他方法可以检索新创建的 blob 的路径吗?我是否可能使用与我应该使用的不同的模板函数?或者也许还有另一种方法可以在不使用 blob 路径的情况下获取 blob 的内容?

最佳答案

我无法重现您提到的错误。创建文件名中包含 ^ 字符的 Blob 时,逻辑应用操作可以毫无问题地获取 Blob 内容。在 Get_blob_content_using_path 操作背后的代码下方

        "Get_blob_content_using_path": {
            "inputs": {
                "host": {
                    "connection": {
                        "name": "@parameters('$connections')['azureblob']['connectionId']"
                    }
                },
                "method": "get",
                "path": "/datasets/default/GetFileContentByPath",
                "queries": {
                    "inferContentType": true,
                    "path": "@{split(triggerBody()?['subject'], '/')?[4]}/@{split(triggerBody()?['subject'], '/')?[6]}",
                    "queryParametersSingleEncoded": true
                }
            },

HTH

关于azure - 如何使用 EventGrids BlobCreated 事件数据中的 URL 获取 Blob 的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52443069/

相关文章:

java - 在 Jersey 中处理多个查询参数

c# - Azure网站连接到Azure数据库在本地工作正常但未部署

Azure Filesshare - 系统错误 53 - 故障排除

php - 解析爬虫的 url

php - 如何将漂亮的页面标题转换为有效的 URL 字符串?

swift - 从 CloudKit 下载的 URL 在按钮按下期间使应用程序崩溃

java - 尽管文件存在,但 FileNotFoundException

java - 从 file.getpath() Java 中删除一些文件夹

sql - Synapse/ADF - 如果预复制脚本中的动态配置列为 True,如何截断表

azure - 自动启动/停止现有 Azure VM 作为 VSTS 中的构建代理