如何在mule中获取附件的信息?

时间:2015-09-22 14:14:29

标签: mule mule-el

我正在尝试获取mule应用程序中附加文件的信息。我使用POSTMAN来发布文本文件。但是在mule应用程序中的HTTP接收器之后入站附件名称的大小= 0.如何解决这种情况?

3 个答案:

答案 0 :(得分:2)

检查此链接:

Tool for sending multipart/form-data request

您基本上需要选择表单数据并从下拉列表中选择文件,然后使用“选择文件”按钮上传文件。

您可以使用mel表达式检查mule中的附件:

“#[message.inboundAttachments]

以下是我更新的答案,我现在可以发布照片:

1

enter image description here

OR

enter image description here

  1. 配置Foreach:
  2. enter image description here

    1. Set-Payload具有以下值:
    2. “#[org.apache.commons.io.IOUtils.toByteArray(payload.getInputStream());]

      1. 记录器具有以下值:
      2. “#[有效载荷]

        1. 这是一个带有返回代码200的邮递员设置示例,请注意我添加了“key”1和2,我们需要:
        2. enter image description here

          我的控制台中的结果是这样的(我删除了其他人):

          < mule xmlns:vm =“http://www.mulesoft.org/schema/mule/vm" xmlns:batch =”http://www.mulesoft.org/schema/mule/batch" xmlns:data-mapper =“http://www.mulesoft.org/schema/mule/ee/data-mapper" xmlns:db =”http://www.mulesoft.org/schema/mule/db" xmlns:tracking =“http://www.mulesoft.org/schema/mule/ee/tracking" xmlns:sfdc =”http://www.mulesoft.org/schema/mule/sfdc"的xmlns:文件=“http://www.mulesoft.org/schema/mule/file" .. .. .. .. < mule xmlns:context =“http://www.springframework.org/schema/context" xmlns:cluster =”http://www.mulesoft.org/schema/mule/ee/cluster"的xmlns:数据映射器=“http://www.mulesoft.org/schema/mule/ee/data-mapper" .. .. .. ..

答案 1 :(得分:1)

<强>发件人:

<http:listener config-ref="HTTP_Listener_Configuration" path="apptest" doc:name="HTTP"/>        
<set-attachment attachmentName="test.json" value="{'Hi':'Hello'}" contentType="text/plain" doc:name="Attachment-JSON"/>
<set-attachment attachmentName="inputdata.json" value="{'k1':'v1','k2':'v2'}" contentType="text/plain" doc:name="Attachment"/>
<set-payload value="#['some data']" doc:name="Set Payload"/>
<http:request config-ref="HTTP_Request_Configuration" path="path2" method="POST" doc:name="HTTP"/>

<强>接收器:

<http:listener config-ref="HTTP_Listener_Configuration" path="path2" allowedMethods="POST" doc:name="HTTP"/>
<foreach collection="#[message.inboundAttachments]" doc:name="For Each">
    <set-payload value="#[payload.getInputStream()]" doc:name="Set Payload"/>
    <logger message="File Name: #[key]   Payload is: #[message.payloadAs(java.lang.String)]" level="INFO" doc:name="Logger"/>           
</foreach>

答案 2 :(得分:0)

我测试过Postman从文件上传中发送二进制数据,似乎它在请求体中发送文件内容,这意味着您将在有效负载中获取该数据,而不是作为入站附件。为了将文件作为入站附件,您应该使用Postman POST表单数据,以便发送多部分请求,如@Ralph所述。我已经检查过,这种方式有效。 HTH。