java - Play 应用程序 |如何将 FilePart 传递给其他请求

标签 java playframework

在java play应用程序中,我公开了文件的Put请求,并且我想在wsClient的另一个请求中使用此FilePart:

public CompletionStage<String> upload() {
        Http.RequestBody body = request().body();
        Http.MultipartFormData formData = body.asMultipartFormData();
        Http.MultipartFormData.FilePart<File> file = formData.getFile("file");

        return wsClient.url("fake")
                .setContentType("multipart/form-data")
                .post(Source.single(b))
                .thenApplyAsync(wsResponse -> {
                        return wsResponse.getBody();
                })
                .exceptionally(throwable -> throwable.getMessage());
    }

我得到了响应:“java.lang.UnsupportedOperationException:不支持的部件类”

感谢您的帮助

最佳答案

此帖子端点需要以下类型的正文:

Source<? super Http.MultipartFormData.Part<Source<ByteString, ?>>, ?>

可以通过以下方式从表单部件列表构建:

List<Http.MultipartFormData.Part> partList = new ArrayList<>();
Source<ByteString, ?> file = FileIO.fromFile(filePart.getFile());
Http.MultipartFormData.FilePart<Source<ByteString, ?>> filePart = new Http.MultipartFormData.FilePart<>(file.getKey(), file.getFilename(), filePart.getContentType(), file);
partList.add(filePart);

然后,您可以使用以下命令将其作为帖子正文提供:

.post(Source.from(Collections.unmodifiableList(partList)))

关于java - Play 应用程序 |如何将 FilePart 传递给其他请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59845231/

相关文章:

java - 多态对象层次结构的构建器模式 : possible with Java?

java - 如何与 Maven 安装并行运行 Maven 测试?

java - 生成没有相邻字符的字符串的所有排列的算法

java - 为 Play 构建 WAR 时 .class 位置出错!框架应用

scala - 如何在 Play 框架中处理可选查询参数

Java服务器在需要时监听socket

java - Java 类中的最终可选成员变量

scala - 如何在光滑表映射中省略案例类字段?

java - 如何通过 Play! 中的请求启动后台线程!框架?

java - 使用 SSL java key 存储问题进行自动测试