Я пытаюсь «пройти» загрузку с контроллера на другой сервер в рамках составного запроса, используя WebClient
. Я, наконец, загрузил файл, но у меня возникли проблемы с получением потокового имени файла из FilePart
. Я не уверен, что это вообще возможно?
Это фрагмент кода, который вызывает проблему:
private MultiValueMap<String, HttpEntity<?>> getMultipartPayload(Flux<FilePart> fileUploadFlux) {
MultipartBodyBuilder builder = new MultipartBodyBuilder();
Flux<DataBuffer> dataBufferFlux = fileUploadFlux.flatMap(Part::content);
// spring doesn't have an encoder for FilePart, so we must extract the DataBuffer
builder.asyncPart("file", dataBufferFlux, DataBuffer.class).headers(h -> {
// need to set content-disposition header
// but - this doesn't work as the filename is still a flux
h.setContentDispositionFormData("file", fileUploadFlux.map(FilePart::filename));
});
return builder.build();
}
Обратите внимание, что мне пришлось извлечь Flux<DataBuffer>
из Flux<FilePart>
, поскольку Spring не смог найти автора для FilePart
(No suitable writer found for part: file
).
Можно ли установить заголовок размещения содержимого таким способом?