WSO2 ESB保留multipart / form-data消息中的所有文件

时间:2015-09-02 14:59:26

标签: wso2 esb multipartform-data

我是ESB的新手(我使用 WSO2 ESB 4.8.1 ),我遇到了一些问题,以便从multipart / form-data消息中保存文件。

我有一个HTML表单,我在其中传递一些文本字段(fe名称,年龄,方向....)和一些不同格式的文件(jpg,docx,pdf ...),这些文件可以是长文件(从Kb到2Gb以上)。

当我将此表格提交给WSO2 ESB时,会通过API接收(也可能是代理)。

我想将每个文件传递到文件系统中保存在表单中。

我尝试做这样的API:

<api name="apiTest" context="/apiTest">
  <resource methods="POST" url-mapping="/test">
    <inSequence>
      <property name="OUT_ONLY" value="true"/>
      <endpoint>
        <address uri="vfs:file:///home/files"/>
       </endpoint>
    </inSequence>
    <outSequence>
    </outSequence>
    <faultSequence>
    </faultSequence>
  </resource>
</api>

HTML表单是这样的:

<html>
  <head></head>
  <body>
    <form action="http://localhost:8280/apiTest/test" method="POST" enctype="multipart/form-data">
      name: <input type="text" name="name" value=""></br>
      age: <input type="text" name="age" value=""></br>
      file: <input type="file" name="file" size="40" multiple>
      file2: <input type="file" name="file2" size="40" multiple>
      </p>
      <input type="submit" value="Submit">
    </form>
  </body>
</html>

我修改了axis2.xml以启用Builders:

<messageBuilder contentType="multipart/form-data" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
<messageBuilder contentType="multipart/related" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
<messageBuilder contentType="application/pdf" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

和格式化程序:

<messageFormatter contentType="multipart/form-data"  class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
<messageFormatter contentType="application/pdf"  class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>

执行结果是 / home / files 中的一个文件,名为&#39; file &#39;内容如:

----------WebKitFormBoundaryAXu9AAL2pPEV5pUN
Content-Disposition: form-data; name="name"

Joe
----------WebKitFormBoundaryAXu9AAL2pPEV5pUN
Content-Disposition: form-data; name="age"

54
----------WebKitFormBoundaryAXu9AAL2pPEV5pUN
Content-Disposition: form-data; name="file"; filename="photo.jpg"
Content-type: image/jpeg

       <<Here are a stream of bytes>>
----------WebKitFormBoundaryAXu9AAL2pPEV5pUN
Content-Disposition: form-data; name="file2"; filename="curriculum.pdf"
Content-type: application/pdf

       <<Here are a stream of bytes>>
----------WebKitFormBoundaryAXu9AAL2pPEV5pUN--

我想要的结果是至少两个名为&#34; photo.jpg &#34;和&#34; curriculum.pdf &#34;在那条路径(/ home / files)

任何方式做我想要的?

0 个答案:

没有答案