首页 > 解决方案 > 如何在逻辑应用程序中将内容类型应用程序八位字节流转换为 csv?

问题描述

我正在使用http api调用下载 D365 导出 csv 文件。它以二进制格式下载 "$content-type": "application/octet-stream"

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

我尝试了下面的代码仍然没有正确解码并给出垃圾值。请让我知道获取 csv 文件的正确方法。

我认为 $content 不仅包含内容,还包含完整的文件数据。

json(base64ToString(replace(body('Get_blob_content')?['$content'],'77u/','')))
@string(body('Download_the_package_file')['$content'])

在此处输入图像描述

标签: azureazure-logic-appsazure-logic-app-standard

解决方案


我观察到您正在导出 CSV 文件,但正在从 blob 中读取 .json 文件。根据您提供的信息,我们有 3 个场景。

1. 如果 test.json 文件包含 AVAVendorEntity.csv 元素 您可以通过对整个输出使用字符串表达式来检索这些文件而没有垃圾。

示例: 如果正文包含

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

然后我们使用

string(triggerBody())

在此处输入图像描述

2. 如果只有 CSV 元素但扩展名为 .json 如果是这种情况,那么我们使用 JSON 而不是字符串

示例: 如果正文包含

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

然后我们使用

json(triggerBody())

在此处输入图像描述

3. 相应地更改内容类型

4. 提取数据时可能是API调用的问题

要将所需的输出转换为 .csv 的一种解决方法是,您始终可以使用 .csv 扩展名将它们存储到 blob 中,然后它会自动将数据转换为 CSV 格式。 在此处输入图像描述


推荐阅读