【发布时间】:2019-05-15 00:36:56
【问题描述】:
我有一个基于 Spring 的 Rest 服务,它提供 PDF 作为响应。使用下面的代码,我可以在邮递员中将 PDF 内容作为二进制值获取。我的问题是在调用服务时将其作为附件下载。
要实现这一点,我需要对代码或客户端进行任何更改。
@GetMapping(value="/getUserpdf")
public ResponseEntity<Resource> getUserInfo(@RequestHeader(name="reqHeader") Map<String, String> reqHeader,
@RequestParam(name="userId",required=true) String userId){
MetaInfo metaInfo = getHeaderValues(reqHeader);
//To get Actual PDF content as Bytes
byte[] pdfBytes = getUserPdfService.getUserInfo(metaInfo,userId);
ByteArrayResource resource = new ByteArrayResource(pdfBytes);
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=UserInfo.pdf");
return ResponseEntity
.ok()
.headers(headers)
.contentLength(pdfBytes.length)
.contentType(MediaType.parseMediaType("application/octet-stream")).body(resource);
}
我也注册了我的转换器
@Bean
public HttpMessageConverters customConverters() {
ByteArrayHttpMessageConverter arrayHttpMessageConverter = new ByteArrayHttpMessageConverter();
return new HttpMessageConverters(arrayHttpMessageConverter);
}
【问题讨论】:
标签: spring-boot postman