真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java實(shí)現(xiàn)批量下載選中文件功能

小編給大家分享一下Java實(shí)現(xiàn)批量下載選中文件功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、臨海網(wǎng)站維護(hù)、網(wǎng)站推廣。

1.在action中定義變量

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

  分別給出get和set方法

2.  主方法 

/** 
   * 下載多個(gè)文件:壓縮成zip 
   * 
   * @return 
   * @throws Exception 
   */ 
  public String downLoadLessionsZip() { 
    downLoadPaths.clear(); 
    String firstFileName = "";// 第一個(gè)文件的文件名 
    List fileVos = new LinkedList(); 
    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(); 
            } 
          } 
        } 
      } 
    } 
    // 有數(shù)據(jù)可以下載 
    if (downLoadPaths.size() != 0) { 
      // 進(jìn)行預(yù)處理 
      preProcess(firstFileName); 
    } else { 
      // 沒(méi)有文件可以下載,返回nodata 
      return "nodata"; 
    } 
    // 處理 
    writeZip(fileVos); 
    // 后處理關(guān)閉流 
    afterProcess(); 
    return null; 
  } 
  // 壓縮處理 
  public void writeZip(List 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(); 
      } 
    } 
  } 
  // 預(yù)處理 
  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(); 
      // 清空輸出流(在迅雷下載不會(huì)出現(xiàn)一長(zhǎng)竄) 
      response.reset(); 
      // 設(shè)定輸出文件頭 
      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中配置

//class值為bean.xml中配置的bean 
   
    204//表示響應(yīng)執(zhí)行成功,但沒(méi)有數(shù)據(jù)返回,瀏覽器不用刷新,不用導(dǎo)向新頁(yè)面 
   

  用到的jar包

以上是“Java實(shí)現(xiàn)批量下載選中文件功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


文章名稱:Java實(shí)現(xiàn)批量下載選中文件功能
鏈接地址:http://weahome.cn/article/goijgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部