spring mvc 預覽pdf 一直會變成下載問題


java web中下載文件時,我們一般設置Content-Disposition告訴瀏覽器下載文件的名稱,是否在瀏覽器中內嵌顯示.

Content-disposition: inline; filename=foobar.pdf

表示瀏覽器內嵌顯示一個文件

 

Content-disposition: attachment; filename=foobar.pdf

 

實例:

 /**
* 合同文件預覽
* @param id
* @return
*/
@ApiOperation(value = "合同文件預覽", produces = "application/pdf")
@RequestMapping(value = "viewFile",method = RequestMethod.GET,produces="application/pdf")
public ResponseEntity<byte[]> viewFile(@ApiParam(value = "合同id") @RequestParam(value = "id") String id) throws Exception {
ContractFileDTO contractFileDTO = contractFileService.get(id);
InputStream inputStream = null;
//數據庫里面存了兩種數據,一種是fileId,一種是fileKey,為了兼容
if(contractFileDTO.getFileId().length() > 32){
inputStream = getViewFileInputStreamByKey(contractFileDTO.getFileId());
}else{
inputStream = getViewFileInputStream(contractFileDTO.getFileId());
}

//http頭信息
HttpHeaders headers = new HttpHeaders();
//設置編碼
String downloadFileName = new String(contractFileDTO.getFileName().getBytes("UTF-8"),"UTF-8");

headers.setContentDispositionFormData("inline;",downloadFileName.trim()+".pdf");


// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

return new ResponseEntity<byte[]>( IOUtils.toByteArray(inputStream),headers,org.springframework.http.HttpStatus.CREATED);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM