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

如何从Logic App向Function App传输文件?解决JSON反序列化问题

解决Logic App传字节数组到Function App的JSON反序列化问题

我之前也踩过这个坑!核心问题在于二进制字节数组直接塞进JSON传递时,很容易因为编码或格式不兼容导致反序列化失败——毕竟JSON本质是文本格式,对二进制数据的原生支持并不好。下面给你两种针对性的解决方案,优先推荐第一种:

方案1:优先传递Base64编码的文件内容(推荐)

这是最稳妥的方式,把二进制字节转成文本格式的Base64字符串,完美适配JSON的传输要求:

  • 在Logic App中,处理附件内容时,使用base64()函数将字节数组转为Base64字符串。比如你获取到附件字节后,表达式可以写:
    base64(body('Get_Attachment_Content'))
    
    把这个值放进你要传给Function App的JSON结构里(比如用"fileContent": "@base64(body('Get_Attachment_Content'))")。
  • 在Function App端,接收这个Base64字符串后,解码回字节数组:
    • C#示例:
      byte[] fileBytes = Convert.FromBase64String(requestBody.FileContent);
      
    • Python示例:
      import base64
      file_bytes = base64.b64decode(request_body["fileContent"])
      
  • 拿到字节数组后,就可以正常传递给第三方API了。

方案2:针对文本类文件,直接传递字符串内容

如果你的附件是纯文本文件(比如txt、csv等),可以直接转成文本字符串传递:

  • 在Logic App中,用string()函数把字节转成文本(注意匹配文件编码,默认是UTF-8):
    string(body('Get_Attachment_Content'))
    
  • Function App端直接接收字符串参数,无需反序列化字节,直接传给第三方API即可。

额外注意事项

  • 确认Function App的HTTP触发器配置:确保请求的Content-Type是application/json,并且JSON参数的键名和Logic App传递的完全一致。
  • 大文件场景优化:如果附件体积较大(比如超过10MB),Base64编码会让数据体积增加约30%,这时候建议先把附件上传到Azure Blob存储,然后把Blob的SAS URL传给Function App,让Function从Blob读取文件内容,这样更高效也避免JSON过大的问题。

内容的提问来源于stack exchange,提问作者lokanath das

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:54:25