azure - 如何使用来自 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 的内容?
解决方案
我无法重现您提到的错误。创建将^
字符作为文件名一部分的 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
}
},
高温高压