MuleESB-从http post获取文件
在Mule中,我需要通过java操作通过http post发送的xlsx文件。 如何通过java发布文件? 我以为可以通过Mule信息联系到它,但是MuleESB-从http post获取文件,http,curl,mule,Http,Curl,Mule,在Mule中,我需要通过java操作通过http post发送的xlsx文件。 如何通过java发布文件? 我以为可以通过Mule信息联系到它,但是 eventContext.getMessage().getOutboundAttachmentNames() 两者都不是 eventContext.getMessage().getInboundAttachmentNames() 给出结果 有什么想法吗 要进行http post测试,我使用curl的方式如下: curl --form uploa
eventContext.getMessage().getOutboundAttachmentNames()
两者都不是
eventContext.getMessage().getInboundAttachmentNames()
给出结果
有什么想法吗
要进行http post测试,我使用curl的方式如下:
curl --form upload=@filename --form press=OK http://localhost:8088/HttpController
流程是这样的:
<flow name="xlsx_to_xls_converterFlow1" doc:name="xlsx_to_xls_converterFlow1">
<http:inbound-endpoint exchange-pattern="request-response" doc:name="HTTP" address="http://localhost:8088/HttpController"/>
<logger level="INFO" doc:name="Logger"/>
<component class="Convert_XLSXtoXLS" doc:name="Java"/>
</flow>
多谢各位
更新
要使标记的解决方案工作,请覆盖HttpMultipartMuleMessageFactory的extractPayloadFromHttpRequest以选择正确的输入文件名。
事实上,在当前的HttpMultipartMuleMessageFactory实现中,只有当input file name=“payload”将Java组件放在http:inbound端点后面时,才会上载文件,并将InputStream作为组件中方法的参数 您必须处理输入流,或者在两者之间放置一个回音:
<flow name="FileUpload" doc:name="FileUpload">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9090" doc:name="HTTP"/>
<echo-component doc:name="Echo"/>
<component class="de.codecentric.basics.FileUploadComponent" doc:name="Java"/>
</flow>
}
在这种情况下,您仍然需要解析多部分表单数据
或者尝试使用REST组件,请参见:将Java组件放置在http:inbound端点之后,将导致InputStream作为组件中方法的参数 您必须处理输入流,或者在两者之间放置一个回音:
<flow name="FileUpload" doc:name="FileUpload">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9090" doc:name="HTTP"/>
<echo-component doc:name="Echo"/>
<component class="de.codecentric.basics.FileUploadComponent" doc:name="Java"/>
</flow>
}
在这种情况下,您仍然需要解析多部分表单数据
或者尝试使用REST组件,请参见:将Java组件放置在http:inbound端点之后,将导致InputStream作为组件中方法的参数 您必须处理输入流,或者在两者之间放置一个回音:
<flow name="FileUpload" doc:name="FileUpload">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9090" doc:name="HTTP"/>
<echo-component doc:name="Echo"/>
<component class="de.codecentric.basics.FileUploadComponent" doc:name="Java"/>
</flow>
}
在这种情况下,您仍然需要解析多部分表单数据
或者尝试使用REST组件,请参见:将Java组件放置在http:inbound端点之后,将导致InputStream作为组件中方法的参数 您必须处理输入流,或者在两者之间放置一个回音:
<flow name="FileUpload" doc:name="FileUpload">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9090" doc:name="HTTP"/>
<echo-component doc:name="Echo"/>
<component class="de.codecentric.basics.FileUploadComponent" doc:name="Java"/>
</flow>
}
在这种情况下,您仍然需要解析多部分表单数据
或者尝试使用REST组件,请参阅:您需要配置HTTP连接器来处理多部分请求,以便在附件中接收它们。在其XML配置中添加以下内容:
<service-overrides messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory"/>
(如果您认为这很麻烦,请向上投票)您需要配置HTTP连接器来处理多部分请求,以便在附件中接收它们。在其XML配置中添加以下内容:
<service-overrides messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory"/>
(如果您认为这很麻烦,请向上投票)您需要配置HTTP连接器来处理多部分请求,以便在附件中接收它们。在其XML配置中添加以下内容:
<service-overrides messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory"/>
(如果您认为这很麻烦,请向上投票)您需要配置HTTP连接器来处理多部分请求,以便在附件中接收它们。在其XML配置中添加以下内容:
<service-overrides messageFactory="org.mule.transport.http.HttpMultipartMuleMessageFactory"/>
(如果您认为这很麻烦,请向上投票)@David:解决方案可行,但上传必须命名为“payload”,例如:curl--form payload=@file.txt如果HttpMultiPartMuleMessageFactory解析所有部分并将它们放在一个以名称为键的映射中,那就更好了。附加说明:服务覆盖必须在连接器中,而不是在端点中。@David:解决方案可行,但上载必须命名为“payload”,例如:curl--form payload=@file.txt如果HttpMultiPartMuleMessageFactory能够解析所有部分,并将它们放在一个以名称为键的映射中,那就更好了。附加说明:服务覆盖必须在连接器中,而不是在端点中。@David:解决方案可行,但上载必须命名为“payload”,例如:curl--form payload=@file.txt如果HttpMultiPartMuleMessageFactory能够解析所有部分,并将它们放在一个以名称为键的映射中,那就更好了。附加说明:服务覆盖必须在连接器中,而不是在端点中。@David:解决方案可行,但上载必须命名为“payload”,例如:curl--form payload=@file.txt如果HttpMultiPartMuleMessageFactory能够解析所有部分,并将它们放在一个以名称为键的映射中,那就更好了。附加说明:服务覆盖必须在连接器中,而不是在端点中。实际上,仅仅更改messageFactory是不够的。我更新了问题,把解决方案放在那里。实际上,仅仅改变messageFactory是不够的。我更新了问题,把解决方案放在那里。实际上,仅仅改变messageFactory是不够的。我更新了问题,把解决方案放在那里。实际上,仅仅改变messageFactory是不够的。我更新问题,把答案放在那里。