java - 如何使用 org.jboss.resteasy.client.ClientRequest 上传多部分文件?
问题描述
我需要维护旧版软件。我们如何使用org.jboss.resteasy.client.ClientRequest
上传文件org.springframework.web.multipart.MultipartFile
?
总之我想实现:
curl -X POST http://mydomain/upload?sender=mr_abc -F file=@${FILE}
使用ClientRequest
. ${FILE}
可以是任何文件作为字符串路径示例:/Users/mr_abc/mytarfile.tar
.
这是我所拥有的:
request = new ClientRequest("http://mydomain/upload");
request.header("Content-Type","multipart/form-data");
request.queryParameter("sender", "mr_abc");
request.queryParameter("file", new File("/Users/mr_abc/mytarfile.tar"));
ClientResponse<String> response = request.post(String.class);
导致错误
Required request part 'file' is not present
解决方案
我们需要添加:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.0.19.Final</version>
<scope>test</scope>
</dependency>
我之前尝试过 2.3.5.Final 版本,但失败了,所以 3.0.19 似乎是一个更好的版本。并且在java代码中需要使用类MultiPartFormDataOutput
File file = new File("/Users/mr_abc/mytarfile.tar");
MultipartFormDataOutput upload = new MultipartFormDataOutput();
upload.addFormData("file", targetStream, MediaType.MULTIPART_FORM_DATA_TYPE, "mytarfile.tar");
request = new ClientRequest("http://mydomain/upload");
request.queryParameter("sender", "mr_abc");
request.body(MediaType.MULTIPART_FORM_DATA_TYPE, upload);
ClientResponse<String> response = request.post(String.class);
推荐阅读
- docker - 雷达+传输+码头;远程路径出错
- tensorflow - 如何为自定义 keras 层创建可训练的权重变量
- erlang - Erlang.mk + boss_db:最小的工作示例
- ruby - 尝试从字符串 RUBY 中删除空格
- node.js - 节点js等待函数返回以继续for循环
- java - 如何写金额
> Corda 中的参数字段? - answer-set-programming - 如何获取谓词中重复值的计数?
- sql-server - 创建更多用于删除记录的 SQL AGENT 步骤是否会带来性能增益或损失
- r - DSN 包含驱动程序和应用程序(Oracle 数据库)之间的体系结构不匹配
- ios - 在表格视图单元格中显示列数据 - 为什么我的表格单元格没有被创建和填充?