Mule(Mule ESB 3.7)中包含文件和文本的多部分/表单数据HTTP POST

时间:2016-12-14 20:06:18

标签: mule multipartform-data

我有一个入站SFTP端点,它检索文件,我想用文件和屏幕截图中附带的其他数据(文本)进行HTTP发布。根据mule文档,有效负载必须是我使用Set Attachment属性进行的出站附件。使用这种方法,我将我的一个附件的Content-Type设置为application / XML(因为我的文件是XML类型),而将text / plain设置为另一个参数。实现这个的任何想法? 我附上了Postman中请求的截图。

enter image description here

2 个答案:

答案 0 :(得分:2)

以下是更新的答案,适用于带有DataWeave 2.0的Mule 4.2.2 EE。

只需添加带有以下DataWeave脚本的“设置有效载荷”连接器:

%dw 2.0
import dw::module::Multipart
output multipart/form-data
---
{
  parts: {
    part1: Multipart::field({name:"part1FieldName", value: "part 1 value", mime: "application/octet-stream"}),
    part2: Multipart::field({name:"part2FieldName", value: "part 2 value", mime: "application/json"})
  }
}

亚历克西斯

答案 1 :(得分:0)

假设您正在从SFTP入站端点接收PDF文件(根据文件类型更改内容类型),并且您希望将该文件发送到HTTP,那么您需要在向HTTP端点发送请求之前创建以下内容:

<set-attachment value="<byte-array-contents>" contentType="application/pdf" attachmentName="file" doc:name="Attachment" />

<set-attachment value="some-info" contentType="text/plain" attachmentName="metadata" doc:name="Attachment" />

另外,请确保将payload设置为null,如下所示

<set-payload value="#[null]" />

最后,调用/发送请求到HTTP端点。