一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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

服務器之家 - 編程語言 - JAVA教程 - Java實現批量下載選中文件功能

Java實現批量下載選中文件功能

2021-02-07 17:34秋分中的雨 JAVA教程

這篇文章主要介紹了Java實現批量下載選中文件功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

1.在action中定義變量

?
1
2
3
4
5
6
private List<String> downLoadPaths = new ArrayList<String>();//存儲選中文件的下載地址
private OutputStream res;
private ZipOutputStream zos;
private String outPath;
private String lessionIdStr;// 選中文件ID拼接的字符串
private String fileName; //瀏覽器下載彈出框中顯示的文件名

  分別給出get和set方法

2.  主方法 

?
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/**
   * 下載多個文件:壓縮成zip
   *
   * @return
   * @throws Exception
   */
  public String downLoadLessionsZip() {
    downLoadPaths.clear();
    String firstFileName = "";// 第一個文件的文件名
    List<DownLoadFileVo> fileVos = new LinkedList<DownLoadFileVo>();
    if (StringUtils.isNotEmpty(lessionIdStr)) {
      int end = lessionIdStr.lastIndexOf(",");
      if (end > 0) {
        if (end == lessionIdStr.length() - 1) {
          lessionIdStr = lessionIdStr.substring(0, end);
        }
        String[] ids = lessionIdStr.split(",");
        for (int i = 0; i < ids.length; i++) {
          if (StringUtils.isNumeric(ids[i])) {
            BkPersonLession lession = bkPersonLessionService.downLoadLession(Integer.parseInt(ids[i]));
            if (lession != null) {
              fileVos.add(new DownLoadFileVo(lession
                  .getLessionName(), getContextRealPath()
                  + lession.getLessionSavePath()));
              downLoadPaths.add(getContextRealPath()
                  + lession.getLessionSavePath());
            }
            if (i == 0) {              
                       firstFileName = lession.getLessionName();
            }
          }
        }
      }
    }
    // 有數據可以下載
    if (downLoadPaths.size() != 0) {
      // 進行預處理
      preProcess(firstFileName);
    } else {
      // 沒有文件可以下載,返回nodata
      return "nodata";
    }
    // 處理
    writeZip(fileVos);
    // 后處理關閉流
    afterProcess();
    return null;
  }
  // 壓縮處理
  public void writeZip(List<DownLoadFileVo> fileVos) {
    byte[] buf = new byte[8192];
    int len;
    for (DownLoadFileVo fileVo : fileVos) {
      File file = new File(fileVo.getFileSavePath());
      if (!file.isFile())
        continue;
      ZipEntry ze = new ZipEntry(fileVo.getFileName()
          + fileVo.getFileSavePath().substring(
              fileVo.getFileSavePath().lastIndexOf(".")));                          
      try {
        zos.putNextEntry(ze);
        BufferedInputStream bis = new BufferedInputStream(
            new FileInputStream(file));
        while ((len = bis.read(buf)) > 0) {
          zos.write(buf, 0, len);
        }
        bis.close();
        zos.closeEntry();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
  // 預處理
  public void preProcess(String firseFileName) {
    String zipName = "【批量下載】" + firseFileName + "等.zip";
    String filename = "";
    try {
      filename = new String(zipName.getBytes("GBK"), "8859_1");
    } catch (UnsupportedEncodingException e1) {
      e1.printStackTrace();
    }
    this.fileName = filename;
    HttpServletResponse response = ServletActionContext.getResponse();
    try {
      res = response.getOutputStream();
      // 清空輸出流(在迅雷下載不會出現一長竄)
      response.reset();
      // 設定輸出文件頭
      response.setHeader("Content-Disposition", "attachment;fileName="
          + filename);
      response.setContentType("application/zip");
      zos = new ZipOutputStream(res);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  // 后處理
  public void afterProcess() {
    try {
      if (zos != null) {
        zos.close();
      }
      if (res != null) {
        res.close();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

3. 在struts.xml中配置

?
1
2
3
4
5
6
<action name="downLoadBkPersonLessionsZip" class="bkPersonLessionAction"
      method="downLoadLessionsZip">//class值為bean.xml中配置的bean
  <result name="nodata" type="httpheader">
    <param name="status">204</param>//表示響應執行成功,但沒有數據返回,瀏覽器不用刷新,不用導向新頁面
  </result>
</action>

  用到的jar包

總結

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

原文鏈接:http://blog.csdn.net/kosum/article/details/47394321

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: a级影视 | 青草青草视频2免费观看 | xxxxxx国产精品视频 | 精品久久久久久久久免费影院 | 天美传媒传媒免费观看 | 国产精品免费一级在线观看 | 韩剧消失的眼角膜免费完整版 | 99视频在线免费观看 | 黄a一级 | 魔兽官方小说 | 偷偷操不一样 | 美日韩一区二区三区 | 婷婷在线观看香蕉五月天 | 91李宗精品72集在线观看 | 亚洲AV无码偷拍在线观看 | 亚洲区在线 | 91午夜在线观看 | 美女一线天 | 青草香蕉精品视频在线观看 | 国产色司机在线视频免费观看 | videosxxxx老女人| 午夜剧场1000| 日本玖玖视频 | 范冰冰a级一级特级毛片 | 精品一区二区三区高清免费观看 | 性美国人xxxxx18| 清清草在线视频 | chaopeng在线观看 | 五月激情丁香婷婷综合第九 | 四虎在线观看 | 国产一级精品高清一级毛片 | 精品精品久久宅男的天堂 | 白丝捆绑调教 | 精品国产成人AV在线看 | 欧美黑人性猛交╳xx╳动态图 | 99夜色| naruto堂同人本子汉化gg | 99久久免费国产香蕉麻豆 | 日本videosdesexo乱 | 亚洲欧美日韩综合在线播放 | 青青草精品在线 |