首页 > 解决方案 > 可以从 Flux 设置 Content-Disposition 标头在多部分请求中?

问题描述

作为多部分请求的一部分,我正在尝试使用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) 的作者中提取 。

是否可以以这种方式设置 content-disposition 标头?

标签: javaspringspring-webflux

解决方案


推荐阅读