我有一个API,我必须在其中发送包含一个二进制文件的响应,
我尝试了StackOverflow的一些示例,但没有得到任何解决方案。
我在泽西
中尝试过 @POST
@Path("/testmultipart")
@Consumes("application/json")
@Produces("multipart/mixed")
public Response multipartTest() throws URISyntaxException, MessagingException, IOException
{
File image = new File("C:\\Users\\ganesh\\img\\logo.png");
MultiPart objMultiPart = new MultiPart();
objMultiPart.type(new MediaType("multipart", "mixed"));
objMultiPart.bodyPart(image.getName(), new MediaType("text", "plain"));
objMultiPart.bodyPart("" + image.length(), new MediaType("text","plain"));
objMultiPart.bodyPart(image, new MediaType("multipart", "mixed"));
return Response.ok(objMultiPart).build();
}
但是没有运气可以帮忙。
答案 0 :(得分:1)
用于发送单个文件:
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response multipartTest() {
File file = new File("C:\\Users\\ganesh\\img\\logo.png");
return Response.ok(file, MediaType.APPLICATION_OCTET_STREAM)
.header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\"" )
.build();
}
也有两种方法可以返回zip多部分响应。
使用以下代码一次性发送多个数据对象。
MultiValueMap<String, Object> body
= new LinkedMultiValueMap<>();
body.add("firstName", getFirstName());
body.add("images", getImage1());
body.add("images", getImage2());
body.add("lastName", getLastName());
HttpEntity<MultiValueMap<String, Object>> entityData
= new HttpEntity<>(body, headers);
RestTemplate template = new RestTemplate();
ResponseEntity<String> response = template
.postForEntity('endpoinit URL', entityData, String.class);