You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Logic Apps中将application/octet-stream内容转换为CSV文件

D365导出CSV接口返回内容乱码解决方案

调用D365 HTTP导出接口下载CSV时,返回二进制格式报文示例如下:

{
  "$content-type": "application/octet-stream",
  "$content": "UEsDBBQAAAAIAL07VFMaQk8xFQcAAEkXAAAZAAAAQVZBVmV"
}

直接解码$content字段会得到乱码,无法获取正常CSV文件。
问题相关截图:
问题截图


根因分析
  • $content字段存储的是Base64编码的完整二进制文件流,不是纯文本CSV内容
  • 从$content前缀UEsDBBQ可以判定,该二进制流是ZIP压缩包(对应ZIP文件二进制头PK\x03\x04的Base64编码结果),D365导出接口默认会将CSV打包为ZIP返回,直接转字符串必然乱码
已尝试代码错误点

你之前的写法存在逻辑错误:

  • base64ToString直接将ZIP二进制流转为字符串,压缩包二进制不属于可识别文本编码格式,转换结果自然乱码
  • 后续调用json()解析完全多余,目标结果是CSV文件,不是JSON结构数据
  • @string()直接输出Base64编码原文,没有做二进制解码操作
正确处理流程

Power Automate 场景(从你使用的表达式语法判定)

  1. 提取$content字段值:body('Download_the_package_file')['$content']
  2. 转换为二进制流:使用表达式base64ToBinary(<上一步的Base64内容>)
  3. 解压获取CSV:将上一步得到的二进制流传入「提取存档」操作,解压后即可得到正常的CSV文件

通用代码场景(以Python为例)

import base64
import zipfile
from io import BytesIO

# 接口返回的JSON结果
resp_json = {
  "$content-type": "application/octet-stream",
  "$content": "UEsDBBQAAAAIAL07VFMaQk8xFQcAAEkXAAAZAAAAQVZBVmV"
}
# 1. 解码Base64得到ZIP二进制流
zip_bytes = base64.b64decode(resp_json["$content"])
# 2. 解压ZIP提取CSV内容
with zipfile.ZipFile(BytesIO(zip_bytes)) as zip_f:
    # 读取压缩包内第一个文件(默认就是导出的CSV)
    csv_file_name = zip_f.namelist()[0]
    csv_text = zip_f.read(csv_file_name).decode("utf-8")
# 后续可直接处理csv_text或者写入本地文件

内容的提问来源于stack exchange,提问作者Lathik Kumar N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:15:04