首页 > 解决方案 > 如何使用来自 EventGrids BlobCreated 事件数据的 URL 获取 Blob 的路径?

问题描述

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

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

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

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

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

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

标签: azureurlpathazure-logic-appsazure-blob-storage

解决方案


我无法重现您提到的错误。创建将^字符作为文件名一部分的 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
                }
            },

高温高压


推荐阅读