激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - JavaWeb 實現多個文件壓縮下載功能

JavaWeb 實現多個文件壓縮下載功能

2020-12-08 15:10愛計算機的彭濤 Java教程

文件下載時,我們可能需要一次下載多個文件,批量下載文件時,需要將多個文件打包為zip,然后再下載。本文給大家分享實現思路及具體實現代碼,對javaweb實現文件壓縮下載功能感興趣的朋友一起學習吧

文件下載時,我們可能需要一次下載多個文件。批量下載文件時,需要將多個文件打包為zip,然后再下載。

實現思路有兩種:

一是將所有文件先打包壓縮為一個文件,然后下載這個壓縮包,

二是一邊壓縮一邊下載,將多個文件逐一寫入到壓縮文件中。我這里實現了邊壓縮邊下載。

下載樣式:

JavaWeb 實現多個文件壓縮下載功能

點擊下載按鈕,會彈出下載框:

JavaWeb 實現多個文件壓縮下載功能

下載后就有一個包含剛剛選中的兩個文件:

JavaWeb 實現多個文件壓縮下載功能

 

JavaWeb 實現多個文件壓縮下載功能

代碼實現:

filebean

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;
  }
}

控制層:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@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(",");
      arraylist<filebean> filelist = new arraylist<filebean>();
      for (int i = 0; i < ids.length; i++) {// 根據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);
      }
      //設置壓縮包的名字
      //解決不同瀏覽器壓縮包名字含有中文時亂碼的問題
      string zipname = "download.zip";
      response.setcontenttype("application/octet-stream");
      response.setheader("content-disposition", "attachment; filename="+ zipname);
      //設置壓縮流:直接寫入response,實現邊壓縮邊下載
      zipoutputstream zipos =null;
      try{
        zipos=new zipoutputstream(new bufferedoutputstream(response.getoutputstream()));
        zipos.setmethod(zipoutputstream.deflated);//設置壓縮方法 
      }catch(exception e){
        e.printstacktrace();
      }
      dataoutputstream os=null;
      //循環將文件寫入壓縮流
      for(int i=0;i<filelist.size();i++){
        string filepath=filelist.get(i).getfilepath();
        string filename=filelist.get(i).getfilename();
        file file=new file(filepath+"/"+filename);//要下載文件的路徑
        try{
          //添加zipentry,并zipentry中寫入文件流
          //這里,加上i是防止要下載的文件有重名的導致下載失敗
          zipos.putnextentry(new zipentry(i+filename));
          os=new dataoutputstream(zipos);
          inputstream is=new fileinputstream(file);
          byte[] b = new byte[100];
          int length = 0;
          while((length = is.read(b))!= -1){
            os.write(b, 0, length);
          }
          is.close();
          zipos.closeentry();
        }catch(exception e){
          e.printstacktrace();
        }
      }
       //關閉流
      try {
        os.flush();
        os.close();
        zipos.close();
      } catch (ioexception e) {
        e.printstacktrace();
      }      
    }
    return "redirect:list.jhtml";
  }

總結

以上所述是小編給大家介紹的javaweb 實現多個文件壓縮下載功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/huanhuanxiaoxiao/article/details/76422328

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 天天透天天狠天天爱综合97 | 99久久精品日本一区二区免费 | 日本特级a一片免费观看 | 87成人免费看片 | 亚洲欧美国产精品va在线观看 | 日韩激情一区二区三区 | 成人免费淫片视频观 | 亚洲欧美日韩一区二区三区在线观看 | 国产韩国精品一区二区三区久久 | 久久久精品视频国产 | 最新日韩在线观看视频 | 欧美黄色一级片视频 | 在线观看国产日韩 | 国产免费人做人爱午夜视频 | 国产精品久久久免费 | 欧美一级鲁丝片免费看 | 黄色av网| 国产噜噜噜 | 最近免费观看高清韩国日本大全 | 天天夜天天操 | 99久久久国产精品 | 免费视频精品一区二区 | 欧美毛片 | 国内毛片视频 | 国产不卡av在线 | 天堂在线资源库 | 中文字幕欧美视频 | 在线天堂中文字幕 | 国产精选在线 | 午夜小影院| 美国黄色小视频 | 日韩精品网站在线观看 | 成人 精品 | 精品亚洲综合 | 91免费国产视频 | 黄在线观看 | 精品二区在线观看 | 国产亚洲精品美女久久久 | 黄色大片网站在线观看 | 免费色片 | 法国性xxx精品hd专区 |