MuleESB-从http post获取文件

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

在Mule中,我需要通过java操作通过http post发送的xlsx文件。 如何通过java发布文件? 我以为可以通过Mule信息联系到它,但是

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是不够的。我更新问题,把答案放在那里。