【问题标题】:Convert application/octet-stream content type to string将 application/octet-stream 内容类型转换为字符串
【发布时间】:2021-04-13 16:14:15
【问题描述】:

在 REST 调用响应中获取附件 ZIP 文件,其内容类型为 application/octet-stream。如何将其转换为 zip 文件。 从Base64尝试过,但没有运气。

运行时:4.3

【问题讨论】:

  • 您是否正在尝试将文件写入磁盘?
  • 是的,zip 文件包含 xml 文件。
  • 能否请您发布一些有效载荷而不是图像,以便我们可以尝试一下

标签: content-type dataweave mulesoft


【解决方案1】:

尝试使用Compression Module 解压缩收到的 zip 有效负载。

例子:

<compression:extract>
    <compression:compressed>#[payload]</compression:compressed> 
    <compression:extractor>
        <compression:zip-extractor/> 
    </compression:extractor>
</compression:extract>

【讨论】:

  • Aled,我在 http 响应中获取附件文件数据,如图所示,其内容类型为 application/octet-stream。按照您的示例尝试,但得到“解压错误:提供的存档无效 - 存档不是 ZIP 存档”
  • 它是否被重新作为字符串中的二进制文件?
  • yes Aled,将二进制数据作为字符串获取。这里的数据“PK\u0003\u0004\u0014\u0000\b\b\b\u0000#\\\ufffdR\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ u0000\u001f\u0000\u0000\u0000213393_265493_1618241586860.xml\ufffd\u0019"
  • 返回是一件很糟糕的事情。在尝试使用内容之前,您可以尝试使用 payload as Binary 转换为二进制文件,但是我不能确定二进制文件是否会被字符编码损坏。
【解决方案2】:

使用下面的代码转换并写入 zip 到本地驱动器。

<ee:transform doc:name="Transform Message" doc:id="da388237-d53a-47aa-83b2-96d1ef04489d" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/octet-stream
---
payload.content]]></ee:set-payload>
            </ee:message>
</ee:transform>
<file:write doc:name="Write" doc:id="1cfd5210-a65a-4ace-9f07-0f575db3a01a" config-ref="File_Config" path="C:\Retrieval.zip"/>

【讨论】:

    猜你喜欢
    • 2020-08-01
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2018-10-05
    • 2015-07-01
    • 2019-10-16
    相关资源
    最近更新 更多