Azure Logic应用程序 - 获取Blob内容 - 设置内容类型

Vin*_*zon 3 content-type azure azure-storage-blobs azure-logic-apps

Azure Logic Apps操作"获取Blob内容"不允许我们设置返回内容类型.

默认情况下,它将blob作为二进制(八位字节流)返回,这在大多数情况下是无用的.通常,拥有文本(例如json,xml,csv等)会很有用.

我知道这个动作正处于测试阶段.这是短期路线图吗?

Vin*_*zon 6

我找到的解决方法是使用Logic App表达式base64ToString.

例如,使用以下代码创建"Compose"类型的操作(数据操作组):

        "ComposeToString": {
            "inputs": "@base64ToString(body('Get_blob_content').$content)",
            "runAfter": {
                "Get_blob_content": [
                    "Succeeded"
                ]
            },
            "type": "Compose"
        }
Run Code Online (Sandbox Code Playgroud)

输出将是blob的文本表示.


Joe*_*aly 5

所以我有一个 blob 坐在 az 存储中,其中包含 json。获取 blob 为我返回了一个非常无用的八位字节,因为我无法解析它。

错误的请求。在“ParseJson”操作输入中,属性“content”必须是 JSON 类型,但必须是“application/octet-stream”类型。

所以我设置了一个“初始化变量”,内容类型为字符串,指向 GetBlobContent->File Content。base64 转换发生在幕后,我现在可以通过变量访问我的 json。

无需代码。

JSON 输出...

在此处输入图片说明

流程,没有代码...

在此处输入图片说明

享受!希利在坦帕...


Vin*_*zon 1

在摆弄了逻辑应用程序很多次之后,我终于明白发生了什么。

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

{
  "$content-type": "application/xml",
  "$content": "77u/PD94bWwgdm..."
}
Run Code Online (Sandbox Code Playgroud)

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