У меня есть требование, по которому я должен загрузить файл gzip на сервер wso2 EI.
У меня есть файл (gzip) в системе (выполняется java). Мне нужно отправить этот файл в API, размещенный в wso2ei, который его сохранит. Поскольку файл может быть ОГРОМНЫМ, мне нужен API для поддержки загрузки файлов из нескольких частей. Я хочу написать API в wso2 EI, который будет поддерживать multipart и будет хранить этот файл в каком-то месте на самом сервере EI. Я не хочу использовать VFS.
Ниже приведен код, который я пробовал, но не работает. Это создает поврежденный zip-файл. Если я даю огромный файл, значит, у меня тоже возникает ошибка памяти. Хотя при использовании multipart я не ожидал ошибки нехватки памяти (независимо от размера файла).
Примечание: я пробовал без декодирования тела. Также с типом содержимого application / zip.
<?xml version="1.0" encoding="UTF-8"?>
<api context="/upload" name="MultiPartAPI" xmlns="http://ws.apache.org/ns/synapse">
<resource methods="POST" >
<inSequence>
<property expression="json-eval($)" name="inputPayLoad" scope="default" type="STRING"/>
<property name="messageType" scope="axis2" type="STRING" value="multipart/form-data"/>
<property name="ContentType" scope="axis2" type="STRING" value="multipart/form-data"/>
<property expression="//mediate/data/text()" name="payload" scope="default" type="STRING"/>
<property expression="//mediate/data/@filename" name="fileName" scope="default" type="STRING"/>
<log level="custom">
<property name="===========" value="================="/>
<property expression="$ctx:fileName" name="fileName"/>
</log>
<property expression="base64Decode(get-property('payload'))" name="DecodeBody" scope="default" type="STRING"/>
<property description="File full path" expression="fn:concat('\home\files\gzip\',$ctx:fileName)" name="fileFullPath" scope="default" type="STRING"/>
<property name="messageType" scope="axis2" type="STRING" value="application/octet-stream"/>
<property name="ContentType" scope="axis2" type="STRING" value="application/octet-stream"/>
<fileconnector.create>
<source>{$ctx:fileFullPath}</source>
<inputContent>{$ctx:DecodeBody}</inputContent>
</fileconnector.create>
<respond/>
</inSequence>
<outSequence/>
<faultSequence/>
</resource>
</api>
BR // Випин Нирвал