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

Posted

技术标签:

【中文标题】Azure 逻辑应用 - 获取 Blob 内容 - 设置内容类型【英文标题】:Azure Logic Apps - Get Blob Content - Setting Content type 【发布时间】:2017-09-21 17:32:47 【问题描述】:

Azure 逻辑应用操作“获取 Blob 内容”不允许我们设置返回内容类型。

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

我知道该操作处于测试阶段。这是短期路线图吗?

【问题讨论】:

您是否尝试将 blob 设置为正确的内容类型? ***.com/questions/10040403/… 是的。该 blob 是 /json。 【参考方案1】:

我发现的解决方法是使用逻辑应用表达式 base64ToString。

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

        "ComposeToString": 
            "inputs": "@base64ToString(body('Get_blob_content').$content)",
            "runAfter": 
                "Get_blob_content": [
                    "Succeeded"
                ]
            ,
            "type": "Compose"
        

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

【讨论】:

感谢正在取得进展。我能够解析它,但无法将解析的内容放入松弛消息中。 我得到的结果是“点击下载”链接,因为它正在将 ftp 读入二进制文件。找不到解决方法【参考方案2】:

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

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


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

所以我们可以解码它,但它真的没用。这是 Logic App 的 XML 对象。我们可以对它应用xml函数,比如xpath。

【讨论】:

【参考方案3】:
    您需要知道内容类型。 使用 @body('Get_blob_content')['$content'] 单独获取内容部分。

【讨论】:

【参考方案4】:

所以我在 az storage 中有一个带有 json 的 blob。 获取 blob 让我得到了一个非常无用的八位字节,因为我无法解析它。

错误请求。属性“内容”必须是 JSON 类型的 'ParseJson' 动作输入,但类型为 'application/octet-stream'。

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

无需代码。

JSON 输出...

流程,无代码...

享受吧!坦帕的希利...

【讨论】:

以上是关于Azure 逻辑应用 - 获取 Blob 内容 - 设置内容类型的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure 逻辑应用添加或修改 blob 时如何获取上传文件的文件名?

为啥没有使用逻辑应用自动生成 Azure Blob MD5 校验和?

保存 Azure blob 连接器的逻辑应用标准问题

Azure 逻辑应用可以从存储帐户中读取 excel 文件吗?

使用 azure 逻辑应用将 blob 从 azure 存储帐户动态发送到电子邮件

为 Azure 逻辑应用设置每周运行一次的计划