我正在开发一个休息点,以下载现有的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;
}
文件已按预期打开。