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

Mule 4中如何处理多部分请求中的多个文件并上传至Salesforce

问题

我需要在Mule 4应用中处理入站multipart请求,请求包含两个属性:

  • data:用于创建Salesforce Case记录的元数据(JSON格式)
  • files:关联Case的文件数组

用Postman发送请求后,Mule收到的payload如下(已脱敏文件数据):

----------------------------778704367722595657997650
Content-Disposition: form-data; name="data"
Content-Type: application/json

[
    {    
        "subject": "test"
    }
]
----------------------------778704367722595657997650
Content-Disposition: form-data; name="files"; filename="logo.jpeg"
Content-Type: image/jpeg

jpegdata
----------------------------778704367722595657997650
Content-Disposition: form-data; name="files"; filename="icon.png"
Content-Type: image/png

pngdata
----------------------------778704367722595657997650--

尝试用Dataweave表达式payload.parts.files获取文件时,仅返回第一个文件logo.jpeg;用files[]形式发送文件也没形成数组。想知道:

  1. 是否需要遍历边界(或固定边界),有没有其他获取所有文件的方式?
  2. multipart是否是合适的方式,还是应该用application/json?(场景是从其他应用的联系表单发送文件到Salesforce)
解决方案

一、获取所有文件的正确方式

Mule 4处理multipart请求时,若多个part使用同一个名称(比如这里的files),直接用payload.parts.files只会返回第一个匹配的part。要获取所有同名part,需通过过滤遍历所有parts:

%dw 2.0
output application/json
---
payload.parts filter ($.name == "files")

这个表达式会返回所有名称为files的part数组,之后你就可以遍历该数组逐个上传文件到Salesforce。

不需要手动处理或固定边界,Mule已经自动解析了multipart请求的结构,请求中的边界是自动生成的,无需额外干预。

二、请求格式的选择

推荐使用multipart/form-data

你的场景是从联系表单发送文件到Salesforce,multipart/form-data是最合适的格式,原因如下:

  • 天然支持同时传输结构化数据(如data字段的JSON)和二进制文件,契合表单上传的常见场景
  • 二进制文件无需编码为Base64,传输效率更高,也避免了编码解码的额外开销

不推荐使用application/json

若采用application/json,需将文件转为Base64字符串嵌入JSON,会带来以下问题:

  • Base64编码会使文件体积增大约30%,增加传输成本
  • 处理大文件时,编码解码会消耗更多内存和CPU资源
  • 不符合表单上传的常规实现方式,与其他应用对接时兼容性较差

内容的提问来源于stack exchange,提问作者Matt P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:35:50