国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本免费在线 | 国产精品亚洲第一区在线暖暖韩国 | 欧美一区视频 | 国产欧美日韩在线观看 | 一级毛片免费视频 | 国产一区二区三区在线免费观看 | 国产精品中文字幕在线观看 | 超碰一区二区三区 | 欧美日韩一级视频 | 精品在线一区二区 | 国产免费自拍av | 中文字幕在线观看不卡视频 | 日韩一区二区不卡 | 艹逼短视频 | 欧美日韩专区 | 国产一区视频在线 | 国产精品视频一区二区三区不卡 | 这里只有精品视频在线 | 欧美 日韩 综合 | 久久国产亚洲 | av在线免费播| 亚洲尤物在线 | 国产欧美综合一区二区三区 | 国产免费久久 | 一级做a爰片性色毛片精油 欧美中文字幕在线观看 | 黄色成人在线 | 亚洲天堂黄色 | 欧美成人区 | 中文字幕在线免费视频 | 午夜寂寞少妇aaa片毛片 | 精品欧美日韩 | 99久久精品免费看国产一区二区三区 | 综合色婷婷 | 亚洲国产精品激情在线观看 | 精品视频一区二区三区四区 | 欧美黑人性暴力猛交喷水 | 久草热8精品视频在线观看 欧美黄色小视频 | 高清一区二区三区 | 午夜视频一区二区三区 | jizzjizzjizz亚洲女 | 在线观看国产视频 |