Multipart/form-data HTTP POST 包含 Mule 中的文件和文本(Mule ESB 3.7)
Multipart/form-data HTTP POST with file and text in Mule (Mule ESB 3.7)
我有一个用于检索文件的入站 SFTP 端点,我想对文件以及屏幕截图中附加的其他数据(文本)执行 HTTP post。根据 mule 文档,有效负载必须是我使用 Set Attachment 属性 执行的出站附件。通过这种方法,我将我的一个附件的 Content-Type 设置为 application/XML(因为我的文件是 XML 类型),并将另一个参数设置为 text/plain。对实现这一目标有什么想法吗?
我附上了请求在 Postman 中的样子的截图。
假设您正在从 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" />
此外,请确保将负载设置为 null,如下所示
<set-payload value="#[null]" />
最后,invoke/send 请求 HTTP 端点。
以下是更新的答案,适用于带有 DataWeave 2.0 的 Mule 4.2.2 EE。
只需添加一个 "set payload" 连接器,使用以下 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"})
}
}
亚历克西斯
我有一个用于检索文件的入站 SFTP 端点,我想对文件以及屏幕截图中附加的其他数据(文本)执行 HTTP post。根据 mule 文档,有效负载必须是我使用 Set Attachment 属性 执行的出站附件。通过这种方法,我将我的一个附件的 Content-Type 设置为 application/XML(因为我的文件是 XML 类型),并将另一个参数设置为 text/plain。对实现这一目标有什么想法吗? 我附上了请求在 Postman 中的样子的截图。
假设您正在从 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" />
此外,请确保将负载设置为 null,如下所示
<set-payload value="#[null]" />
最后,invoke/send 请求 HTTP 端点。
以下是更新的答案,适用于带有 DataWeave 2.0 的 Mule 4.2.2 EE。
只需添加一个 "set payload" 连接器,使用以下 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"})
}
}
亚历克西斯