如何在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
相关产品推荐
相关产品推荐

