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);
}