我有以下代码,它使用InputStream
并将其发送到另一台服务器:
Client client = ClientBuilder.newClient();
MultipartBody mpb = new MultipartBody(
new Attachment(
"file",
uploadedInputStream,
new ContentDisposition("file=test.pdf")
)
);
Response response = client.target(url)
.request(APPLICATION_JSON)
.post(Entity.entity(mpb, MediaType.MULTIPART_FORM_DATA_TYPE), Response.class);
在第二台服务器中,我有这个api:
public String uploadFile(
@Context HttpServletRequest request,
@PathParam("name") String fileName,
@PathParam("type") int type,
@PathParam("userIdentifier") String userId,
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail
)
{
return null;
}
我收到错误400。
当我取出@FormDataParam
和InputStream
中的FormDataContentDisposition
时。
一切正常,我得到了成功的回应。
答案 0 :(得分:0)
因此,我没有找到任何解决方案,因此,我没有以附件的形式发送文件,而是以字节的形式发送了文件。 这是我的方法:
第一台服务器
byte[] bytes = IOUtils.toByteArray(uploadedInputStream);
Client client = ClientBuilder.newClient();
Invocation.Builder request = client.target(url)
.request(APPLICATION_JSON);
Response response = request.post(Entity.entity(bytes, APPLICATION_OCTET_STREAM_TYPE), Response.class);
接收文件的第二个
@POST
@Consumes(MediaType.APPLICATION_OCTET_STREAM)
@Produces(MediaType.APPLICATION_JSON)
@Path("")
public IBlResult<String> uploadFile(@Context HttpServletRequest request,
@PathParam("name") String fileName,
@PathParam("type") int type,
@PathParam("userIdentifier") int userId,
byte[] file
)
{
return null;
}