java pdf文件下载_Java后台返回PDF文件预览下载
Java后臺(tái)返回PDF文件預(yù)覽下載
開(kāi)始的代碼的系統(tǒng)代碼為:
ResponseEntity onePdf = s3Wrapper.download(contractEntity.getContractUrl());
out.write(onePdf.getBody());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=" + Encodes.urlEncode(contractEntity.getContractName()));
一開(kāi)始沒(méi)有看出來(lái)代碼是有問(wèn)題的,pdf流在response設(shè)置頭信息時(shí)已經(jīng)返回了,相當(dāng)于最后兩段設(shè)置頭的代碼沒(méi)調(diào)用,在使用HttpServletResponse對(duì)象時(shí)要考慮到代碼前后的關(guān)系,避免出錯(cuò)。
把設(shè)置頭的代碼放在流輸出之前還是有問(wèn)題,調(diào)用接口時(shí)發(fā)現(xiàn)pdf文件直接下載了,沒(méi)有達(dá)到預(yù)覽的效果。檢查了半天之后發(fā)現(xiàn)是attachment屬性的問(wèn)題,
參考如下:
Content-Disposition的使用方法
一、作用:
1)希望某類或者某已知MIME類型的文件(比如:*.gif;txt;.htm)能夠在訪問(wèn)時(shí)彈出"文件下載對(duì)話框"
2)希望客戶端下載時(shí)以指定文件名顯示
3)希望某文件直接顯示而不是彈出文件下載對(duì)話框
二、使用語(yǔ)句:
response.setHeader(“Content-disposition”, “attachment;filename=” +filename);
Content-disposition:屬性名
attachment:表示以附件方式下載,如果要在頁(yè)面中打開(kāi),可以改為inline.
注意:filename如果是中文會(huì)出現(xiàn)亂碼:解決辦法:
1、將filename 替換為 new String(filename.getBytes(), “ISO8859-1”);
2、將filename 替換為 URLEncoder.encode(filename, “utf-8”);
最后的代碼語(yǔ)為
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文件可以正常預(yù)覽并且下載,問(wèn)題解決。
如果需要解決java接口返回pdf時(shí)修改文件名稱問(wèn)題:
參考:java接口返回pdf時(shí)修改文件名稱問(wèn)題
標(biāo)簽:Java,預(yù)覽,代碼,filename,Content,pdf,PDF,response,下載
來(lái)源: https://blog.csdn.net/qq_39164234/article/details/111996244
總結(jié)
以上是生活随笔為你收集整理的java pdf文件下载_Java后台返回PDF文件预览下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Premiere快速创建代理——视频压缩
- 下一篇: 【数据结构——图和图的存储结构】