Azure逻辑应用 - 获取Blob内容 - 设置内容类型

5
Azure逻辑应用程序中的“获取Blob内容”操作不允许我们设置返回内容类型。默认情况下,它以二进制(octet-stream)的形式返回Blob,在大多数情况下是无用的。通常情况下,将其返回为文本(例如json、xml、csv等)会更有用。我知道该操作处于测试版阶段。短期内是否会在路线图上考虑这个问题?

你尝试过将blob设置为正确的内容类型吗?https://dev59.com/FWkw5IYBdhLWcg3wPIF7 - Derek Li
是的。该 blob 是 /json 格式的。 - Vincent-Philippe Lauzon
5个回答

8
我有一个带有JSON的Blob存储在az数据库中。获取blob后,我得到了一个八位字节,但由于无法解析,因此它相当无用。
引发错误:“BadRequest。在“ParseJson”操作输入中,“content”属性必须是JSON类型,但是却是'application/octet-stream'类型。”
于是我设置了一个“初始化变量”,字符串类型的内容,指向GetBlobContent->文件内容。Base64转换在幕后进行,现在我可以通过变量访问我的json。
不需要编写任何代码。 JSON输出...

enter image description here

FLOW,无代码...

enter image description here

享受吧!在坦帕的 Healy...


7
我发现的解决方法是使用Logic App表达式base64ToString。
例如,创建一个类型为“Compose”的操作(数据操作组),并使用以下代码:
        "ComposeToString": {
            "inputs": "@base64ToString(body('Get_blob_content').$content)",
            "runAfter": {
                "Get_blob_content": [
                    "Succeeded"
                ]
            },
            "type": "Compose"
        }

输出结果将是blob的文本表示形式。

谢谢,进展得很顺利。我能够解析它,但无法将解析后的内容放入Slack消息中。 - Rıfat Erdem Sahin
我得到的结果是“点击下载”链接,因为它将FTP读入二进制文件。找不到解决方法。 - Rıfat Erdem Sahin

1
  1. 你需要知道内容类型。
  2. 使用@{body('Get_blob_content')['$content']}仅获取内容部分。

1

我在尝试了很多次逻辑应用之后,终于明白了发生了什么。

HTTP请求的JSON输出是XML负载的JSON表示形式:

{
  "$content-type": "application/xml",
  "$content": "77u/PD94bWwgdm..."
}

所以我们可以解码它,但实际上没有什么用处。这是逻辑应用程序的 XML 对象。我们可以对它应用 XML 函数,例如 xpath。


0

只需“初始化变量”并将Get Blob Content的输出作为“字符串”类型即可。这将自动解析内容:

parsing blob content by initializing a variable of String type


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接