本篇文章給大家分享的是有關(guān)JavaWeb項(xiàng)目中怎么實(shí)現(xiàn)一個(gè)文件壓縮下載功能,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)公司專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、睢縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為睢縣等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
實(shí)現(xiàn)思路有兩種:
一是將所有文件先打包壓縮為一個(gè)文件,然后下載這個(gè)壓縮包,
二是一邊壓縮一邊下載,將多個(gè)文件逐一寫入到壓縮文件中。
代碼實(shí)現(xiàn):
FileBean
public class FileBean implements Serializable { private Integer fileId;// 主鍵 private String filePath;// 文件保存路徑 private String fileName;// 文件保存名稱 public FileBean() { } public Integer getFileId() { return fileId; } public void setFileId(Integer fileId) { this.fileId = fileId; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } }
控制層:
@RequestMapping(value = "/download", method = RequestMethod.GET) public String download(String id, HttpServletRequest request, HttpServletResponse response) throws IOException { String str = ""; if (id != null && id.length() != 0) { int index = id.indexOf("="); str = id.substring(index + 1); String[] ids = str.split(","); ArrayListfileList = new ArrayList (); for (int i = 0; i < ids.length; i++) {// 根據(jù)id查找genericFileUpload,得到文件路徑以及文件名 GenericFileUpload genericFileUpload = new GenericFileUpload(); genericFileUpload = genericFileUploadService.find(Long.parseLong(ids[i])); FileBean file = new FileBean(); file.setFileName(genericFileUpload.getFileName()); file.setFilePath(genericFileUpload.getFilePath()); fileList.add(file); } //設(shè)置壓縮包的名字 //解決不同瀏覽器壓縮包名字含有中文時(shí)亂碼的問題 String zipName = "download.zip"; response.setContentType("APPLICATION/OCTET-STREAM"); response.setHeader("Content-Disposition", "attachment; filename="+ zipName); //設(shè)置壓縮流:直接寫入response,實(shí)現(xiàn)邊壓縮邊下載 ZipOutputStream zipos =null; try{ zipos=new ZipOutputStream(new BufferedOutputStream(response.getOutputStream())); zipos.setMethod(ZipOutputStream.DEFLATED);//設(shè)置壓縮方法 }catch(Exception e){ e.printStackTrace(); } DataOutputStream os=null; //循環(huán)將文件寫入壓縮流 for(int i=0;i 以上就是JavaWeb項(xiàng)目中怎么實(shí)現(xiàn)一個(gè)文件壓縮下載功能,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
標(biāo)題名稱:JavaWeb項(xiàng)目中怎么實(shí)現(xiàn)一個(gè)文件壓縮下載功能
標(biāo)題路徑:http://weahome.cn/article/pipied.html