azure - 如何在逻辑应用程序中将内容类型应用程序八位字节流转换为 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'])
解决方案
我观察到您正在导出 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 格式。
推荐阅读
- c++ - CentOS6 上重新编译的库与 Ubuntu 20.04 上的结果不同
- qemu - qemu-riscv 如何将设备树 Blob 传递给来宾内核?
- c# - 人工智能书籍内容分类
- lighthouse - 如何修复 Lighthouse “提供低分辨率图像”
- javascript - React 本机钩子不会重新加载信息
- haskell - 使用 try 将 String 转换为 Float
- flutter - 流式传输开始时间问题 - Flutter
- c# - 带有连接查询的自动映射器
- c++ - 在 initializer_list 参数的情况下如何调用 std::make_shared?
- c - if else 语句的 else 部分不起作用