从Spring Rest API下载的损坏的PDF文件

时间:2019-07-16 08:36:49

标签: spring rest spring-boot spring-mvc

我正在开发一个休息点,以下载现有的pdf文件。我可以下载具有大小的PDF,但是当我打开时,出现

错误
  

'Adobe Reader无法打开它是不支持的文件类型或   因为文件已损坏”。

我注意到在邮递员中,响应标头的内容类型为application/pdf;charset=UTF-8。我不确定这是否是原因。

我可以使用简单的spring boot应用程序进行下载,但是在我们的项目中,当我实现相同的代码时,它将无法正常工作。

@GetMapping( path= "/s3/downloads")

public ResponseEntity<byte[]> downloadFile() 
  {
    InputStream in = getClass().getResourceAsStream("/com/consulting/cloud/filetransfers/rest/template_attendance_en_green_full.pdf");

byte[] generatedCertificate = null;
String downloadFileName = "pdfFile1.pdf";
ResponseEntity<byte[]> responseEntity = ResponseEntity.status( HttpStatus.NO_CONTENT ).body( generatedCertificate ); 
try {
  generatedCertificate =  StreamUtils.copyToByteArray(in);
  HttpHeaders headers = new HttpHeaders();
  headers.add("Access-Control-Allow-Origin", "*");
  headers.setContentType( MediaType.APPLICATION_PDF );
  headers.setContentLength( generatedCertificate.length );
  headers.setContentDispositionFormData( "attachment", downloadFileName );
  responseEntity = ResponseEntity.ok().headers( headers ).body( generatedCertificate );
} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
return responseEntity;
}

文件已按预期打开。

0 个答案:

没有答案