Как получить содержимое Content-Disposition из WSO2 6.2 ESB REST API или Custom Mediator - PullRequest
1 голос
/ 27 сентября 2019

То, что я пытаюсь сделать, это получить имя файла с расширением.Клиент может отправлять в остальные API-интерфейсы файлы любого типа, такие как (текст, изображение, документ и т. Д.).

Я пытался выяснить это в течение нескольких дней, но, к сожалению, не смогповезло еще.

Может кто-нибудь помочь мне выбраться из этого?

Я пытался получить из контекста свойств, но ничего не получил

Код ESB:

    <api context="/esb" name="OCR" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="POST" uri-template="/upload">
        <inSequence>
            <property name="messageType" scope="axis2" type="STRING" value="multipart/form-data"/>
            <property name="ContentType" value="multipart/form-data" scope="axis2"/>
            <property expression="$body//file" name="fileVar" scope="default" type="STRING"/>
            <log level="custom">
                <property name="CONTENT_DISPOSITION_1" expression="get-property('CONTENT_DISPOSITION')"/>
                <property name="CONTENT_DISPOSITION_2" expression="get-property('TRANSPORT_HEADERS')"/>
            </log>
            <class name="com.example.GetContentDisposition"/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

Вывод:

CONTENT_DISPOSITION_1 = ноль и CONTENT_DISPOSITION_2 = ноль

Я пробовал с помощью пользовательского посредника

пользовательский код посредника:

public boolean mediate(MessageContext context) {
    //Accessing Transport Headers
    System.out.println("------Transport Headers-------");
    Map<String,Object> mapTransportProperties = (Map<String, Object>) ((Axis2MessageContext)context).getAxis2MessageContext().getProperty("TRANSPORT_HEADERS");
    for (Map.Entry entry : mapTransportProperties.entrySet()) {
        System.out.println("TRANS:" +entry.getKey() + ", " + entry.getValue());
    }
    return true;
}

Вывод:

------ Транспортные заголовки -------

TRANS: Принять, /
TRANS: Принять-Кодирование, gzip,deflate
TRANS: управление кэш-памятью, без кэширования
TRANS: соединение, поддержание активности
TRANS: длина содержимого, 233
TRANS: тип содержимого, multipart / form-data
TRANS: Хост, localhost: 8280
TRANS: Почтальон-токен, e1261dad-947b-4ece-921b-bbe81d232eb6
TRANS: Пользователь-агент, PostmanRuntime / 7.17.1

Не работаетрасположение заголовка содержимого

В результатах POSTMAN я вижу расположение содержимого.

enter image description here

...