Multipart в wso2 EI - PullRequest
       45

Multipart в wso2 EI

0 голосов
/ 19 июня 2020

У меня есть требование, по которому я должен загрузить файл 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 // Випин Нирвал

1 Ответ

0 голосов
/ 22 июня 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...