使用Camel上传多部分表单数据文件

时间:2017-05-01 17:03:18

标签: java apache-camel

我尝试在Java应用程序中设置Apache Camel路由,其中​​使用者端点是一个restlet组件,它将HTTP文件上载作为多部分表单数据的POST处理,然后生产者端点将请求转发给休息服务,也接受多部分表单数据。我是Camel的新手,并且无法弄清楚如何正确连接它。以下是我的路线到目前为止的情况。我是否需要对正文进行任何转换,或者多部分表单数据是否按原样转发?有人可以为我提供正确的方法指导或指出正确的文档吗?

    <route id="createentityattachment">
        <from uri="restlet:/EntityAttachments?restletMethod=POST&amp;restletBinding=#queryStringToHeadersRestletBinding"/>

        <camel:recipientList>
            <camel:simple>
                ${header.apigateway}/entityattachments/1.0.0.0/api/v1/EntityAttachments
            </camel:simple>
        </camel:recipientList>
    </route>

1 个答案:

答案 0 :(得分:0)

我能够使用以下路由定义来实现此功能。请注意路由上的streamCache="true"属性。要在Exchange中正确处理InputStream,需要此设置。有关详细信息,请参阅Camel docs

<route id="createentityattachment" streamCache="true">
        <from uri="restlet:/EntityAttachments?restletMethod=POST&amp;restletBinding=#queryStringToHeadersRestletBinding"/>
        <removeHeaders excludePattern="X-eviCore-EntityAttachments*" pattern="^(Camel|Backbase|User-|Accept|Cache|Cookie|breadcrumbId|Host|Connection|DNT|Upgrade-Insecure-Requests|org.restlet.startTime).*$"/>
        <setHeader headerName="CamelHttpMethod">
            <constant>POST</constant>
        </setHeader>
        <to uri="http4://api.innovate.lan:8280/entityattachments/1.0.0.0/api/v1/EntityAttachments"/>
</route>