我是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)
有什么方法可以做我想要的吗?