如何在逻辑应用程序中将内容类型应用程序八位字节流转换为 csv?

问题描述 投票:0回答:2

我正在使用 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'])

azure azure-logic-apps azure-logic-app-standard
2个回答
2
投票

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

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

示例: 如果身体含有

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

然后我们使用

string(triggerBody())

enter image description here

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

示例: 如果体内含有

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

然后我们使用

json(triggerBody())

enter image description here

3.相应地更改内容类型

4。问题可能出在提取数据时的 API 调用

要将所需的输出转换为 .csv,解决方法之一是您始终可以使用 .csv 扩展名将它们存储到 blob 中,然后它会自动将数据转换为 CSV 格式。 enter image description here


0
投票

我也有同样的问题。有什么解决办法吗?

© www.soinside.com 2019 - 2024. All rights reserved.