我是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中的单个文件,名为'file',内容如下:

----------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--

我想要的结果是在该路径中至少有两个名为“photo.jpg " and " curriculum.pdf”的文件(/ home / files)

有什么方法可以做我想要的吗?