我是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)
任何方式做我想要的?