java pdf文件下载_Java后台返回PDF文件预览下载
Java后臺返回PDF文件預覽下載
開始的代碼的系統代碼為:
ResponseEntity onePdf = s3Wrapper.download(contractEntity.getContractUrl());
out.write(onePdf.getBody());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=" + Encodes.urlEncode(contractEntity.getContractName()));
一開始沒有看出來代碼是有問題的,pdf流在response設置頭信息時已經返回了,相當于最后兩段設置頭的代碼沒調用,在使用HttpServletResponse對象時要考慮到代碼前后的關系,避免出錯。
把設置頭的代碼放在流輸出之前還是有問題,調用接口時發現pdf文件直接下載了,沒有達到預覽的效果。檢查了半天之后發現是attachment屬性的問題,
參考如下:
Content-Disposition的使用方法
一、作用:
1)希望某類或者某已知MIME類型的文件(比如:*.gif;txt;.htm)能夠在訪問時彈出"文件下載對話框"
2)希望客戶端下載時以指定文件名顯示
3)希望某文件直接顯示而不是彈出文件下載對話框
二、使用語句:
response.setHeader(“Content-disposition”, “attachment;filename=” +filename);
Content-disposition:屬性名
attachment:表示以附件方式下載,如果要在頁面中打開,可以改為inline.
注意:filename如果是中文會出現亂碼:解決辦法:
1、將filename 替換為 new String(filename.getBytes(), “ISO8859-1”);
2、將filename 替換為 URLEncoder.encode(filename, “utf-8”);
最后的代碼語為
ResponseEntity onePdf = s3Wrapper.download(contractEntity.getContractUrl());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=" + Encodes.urlEncode(contractEntity.getContractName()));
out.write(onePdf.getBody());
pdf文件可以正常預覽并且下載,問題解決。
如果需要解決java接口返回pdf時修改文件名稱問題:
參考:java接口返回pdf時修改文件名稱問題
標簽:Java,預覽,代碼,filename,Content,pdf,PDF,response,下載
來源: https://blog.csdn.net/qq_39164234/article/details/111996244
總結
以上是生活随笔為你收集整理的java pdf文件下载_Java后台返回PDF文件预览下载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Premiere快速创建代理——视频压缩
- 下一篇: Java 两种zero-copy零拷贝技