Сделать вид, что загружает бинарный файл без составных частей

У меня проблема с клиентом Feign. Мне нужно отправить только один файл, и я не хочу использовать составной тип MIME (так как я думаю, что это не обязательно для одного файла). Я могу сделать это, создав кодировщик в массив байтов, но я хотел бы использовать какой-то поток.

Как я могу написать кодировщик Feign, который будет принимать некоторый поток Java и отправлять его без буферизации данных файла в память. Возможно ли вообще с клиентом Feign выполнять такие бинарные передачи?

Я видел пример, в котором использовался MultiPartFile, в котором использовались «multipart/form-data», но я не хочу использовать multipart.

Можно ли написать такой кодировщик Feign?

ОБНОВЛЕНИЕ Возможно ли вообще отправлять двоичные данные с помощью Feign без буферизации данных в байтовый массив. Согласно этому это не так.


person Zveratko    schedule 03.10.2019    source источник


Ответы (1)


Это на самом деле довольно прямолинейно. Просто используйте byte[] в качестве параметра.

public interface PostAPI {
    @RequestLine("POST /post")
    @Headers({
            "Content-Type: application/octet-stream",
            "Accept: text/plain"
    })
    String length(byte[] blob);
}

Я выбираю String в качестве возвращаемого значения, но вы можете вернуть все, что захотите.

person Sven Döring    schedule 22.01.2020
comment
OP запрашивает способ сделать это без буферизации данных в памяти. - person tunix; 03.05.2021