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

如何在MuleSoft中处理multipart/form-data POST请求中的CSV文件

在MuleSoft中提取Multipart请求的CSV内容并转为JSON

核心解决思路

你需要先解码CSV部分的Base64二进制数据,再将解码后的CSV字符串解析为JSON结构,以下是具体步骤和代码示例:

1. 定位并解码CSV原始内容

从你提供的结构来看,CSV的原始数据存储在content.raw字段中,是Base64编码的二进制值。首先用decodeBase64()函数将其转换为可读的CSV字符串:

%dw 2.0
output application/json
---
// 假设当前payload为你给出的CSV单独部分结构
var csvRawString = decodeBase64(payload.content.raw)

2. 将CSV字符串转为JSON

使用read()函数并指定媒体类型为text/csv,即可将CSV字符串解析为JSON。如果CSV包含表头,默认会将表头作为JSON的键;如果无表头,可添加header=false参数:

%dw 2.0
output application/json
---
var csvRawString = decodeBase64(payload.content.raw)
// 处理带表头的CSV(你的示例数据表头为:INV1234,PO1234,1234,1/1/2024,4321)
read(csvRawString, "text/csv")

// 若CSV无表头,使用以下写法
// read(csvRawString, "text/csv", {header: false})

处理完整Multipart请求的场景

如果整个请求payload是包含PDF和CSV的multipart数组,先通过Content-Disposition的name字段定位到CSV部分:

%dw 2.0
output application/json
---
// 从multipart数组中筛选出name为testData的CSV部分
var csvPart = payload filter ($.headers."Content-Disposition".name == "testData") [0]
var csvRawString = decodeBase64(csvPart.content.raw)
read(csvRawString, "text/csv")

关于你之前的尝试问题

将Transform Message的输出设置为application/dw是错误的——这个格式用于存储DataWeave脚本本身,而非最终输出结果。你需要将输出格式设置为application/json,或直接让DataWeave默认输出JSON(如上述示例)。


内容的提问来源于stack exchange,提问作者Justin Domingo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:42:41