有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是否可以在多部分请求中从Flux<FilePart>设置ContentDisposition头?

我正试图使用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<FilePart>中提取Flux<DataBuffer>,因为Spring无法找到FilePartNo suitable writer found for part: file)的写入程序

是否可以以这种方式设置内容处置标头


共 (0) 个答案