在DataWeave中生成Multipart Form Data内的竖线分隔CSV文件问题
问题:竖线分隔CSV通过Multipart Form Data发送时被转为逗号分隔的解决方法
我尝试将竖线(|)分隔的CSV文件以Multipart Form Data形式发送至API,但生成多部分表单数据后,内容被自动转换为逗号(,)分隔。以下是相关代码和数据:
原DataWeave脚本
%dw 2.0 output multipart/form-data --- { "parts": { "upload": { "headers": { "Content-Disposition": { "name": "upload", "filename": "test.csv", }, "Content-Type": "application/csv" }, "content": payload } } }
输入Payload
id|name 001|test 002|test 003|test
当前输出
------=_Part_9925_416179401.1704798991668 Content-Type: application/csv Content-Disposition: form-data; name="upload"; filename="test.csv" id,name 001,test 002,test 003,test ------=_Part_9925_416179401.1704798991668--
期望输出
------=_Part_9925_416179401.1704798991668 Content-Type: application/csv Content-Disposition: form-data; name="upload"; filename="test.csv" id|name 001|test 002|test 003|test ------=_Part_9925_416179401.1704798991668--
解决方法
问题根源是DataWeave默认会识别CSV格式的payload并解析为对象,输出时又默认使用逗号作为分隔符重新生成CSV。要保留原始竖线分隔的内容,需强制将payload以纯文本形式传入multipart part,避免自动解析和格式化。
修改后的脚本如下:
%dw 2.0 output multipart/form-data --- { "parts": { "upload": { "headers": { "Content-Disposition": { "name": "upload", "filename": "test.csv" }, "Content-Type": "application/csv" }, "content": payload as String } } }
关键修改说明
在content字段中添加as String,强制将payload转为原始字符串类型传递,这样DataWeave就不会对CSV内容进行自动解析和格式转换,完美保留原本的竖线分隔符。
内容的提问来源于stack exchange,提问作者Prasanth Vukoti
相关产品推荐
相关产品推荐

