File upload 将文件发送到Mule入站端点
我正在尝试向Mule入站端点发送一个包含一个文件和两个输入的表单。我有一个定制的处理器和一个定义如下的流:File upload 将文件发送到Mule入站端点,file-upload,mule,endpoint,File Upload,Mule,Endpoint,我正在尝试向Mule入站端点发送一个包含一个文件和两个输入的表单。我有一个定制的处理器和一个定义如下的流: <custom-processor class="informa.app.classifier.transformers.MyfileUploadProcessor" name="fileuploadprocessor"></custom-processor> <flow name="httpTest"> <http:inbound-end
<custom-processor class="informa.app.classifier.transformers.MyfileUploadProcessor" name="fileuploadprocessor"></custom-processor>
<flow name="httpTest">
<http:inbound-endpoint
address="http://tango.privada.informa:11002/services/fileupload"></http:inbound-endpoint>
<processor ref="fileuploadprocessor"/>
</flow>
要进行测试,请使用一个简单的html:
国家代码:
源代码:
文件:
问题是我无法从mulemessage的有效负载创建文件,我不知道如何获取表单中输入的值……我做错了什么?有什么线索吗
提前感谢您需要配置HTTP连接器以使用
org.mule.transport.HTTP.HttpMultipartMuleMessageFactory
来处理多部分/表单数据
HTTP POST
为此,请将以下内容添加到配置中:
<http:connector name="httpConnector">
<service-overrides messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory"/>
</http:connector>
有了这个选项,有效载荷
表单字段将成为Mule消息的流式有效载荷,所有其他字段值将在入站附件中(任何部分标题都将在入站标题中)。David的回答很好(我的救命稻草!!cudos David)
对于一些我一开始没有意识到的额外项目的价值,httpConnector必须用作http传输引用,完整的流将是
<http:connector name="httpConnector" doc:name="HTTP\HTTPS">
<service-overrides
messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory" />
</http:connector>
<flow name="AttachmentTestFlow1" doc:name="AttachmentTestFlow1">
<http:inbound-endpoint connector-ref="httpConnector" doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8081"/>
<component class="ProcessAttachment" doc:name="Java" />
</flow>
我可以使用jmeter上传两个附件,第一个是
- 具有参数name=“payload”和mime type=“multipart/form data”
- 第二个具有用户指定的名称,例如“附件”
public String process(@Payload String payload, @InboundAttachments("*") Map<String, DataHandler> headers ) throws IOException{
InputStream in = headers.get("attachment").getDataSource().getInputStream();
公共字符串进程(@Payload-String-Payload,@InboundAttachments(“*”)映射头)抛出IOException{
InputStream in=headers.get(“附件”).getDataSource().getInputStream();
2年后,对我来说也是一个救命恩人,感谢大家分享这一点知识!
<http:connector name="httpConnector" doc:name="HTTP\HTTPS">
<service-overrides
messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory" />
</http:connector>
<flow name="AttachmentTestFlow1" doc:name="AttachmentTestFlow1">
<http:inbound-endpoint connector-ref="httpConnector" doc:name="HTTP" exchange-pattern="request-response" host="localhost" port="8081"/>
<component class="ProcessAttachment" doc:name="Java" />
</flow>
public String process(@Payload String payload, @InboundAttachments("*") Map<String, DataHandler> headers ) throws IOException{
InputStream in = headers.get("attachment").getDataSource().getInputStream();