【问题标题】:Multipart/form-data HTTP POST with file and text in Mule (Mule ESB 3.7)在 Mule (Mule ESB 3.7) 中包含文件和文本的 Multipart/form-data HTTP POST
【发布时间】:2020-06-19 00:57:36
【问题描述】:

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

【问题讨论】:

    标签: mule multipartform-data


    【解决方案1】:

    以下是更新的答案,适用于带有 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"})
      }
    }
    

    亚历克西斯

    【讨论】:

      【解决方案2】:

      假设您正在从 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]" />
      

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

      【讨论】:

      • 乔达里,成功了!!谢谢萨加尔。但是,我确实对上述方法的 SFTP 文件连接器有疑问。它仅在日志中与 FTP 一起使用,我看到有效负载是 BufferInputStream 而不是 null 用于检索的 SFTP 文件。我们是否必须以不同的方式配置 SFTP?
      • 你能用 HTTP 请求显示整个 XML 正文吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多