Java实现批量下载选中文件功能

这篇文章主要介绍了Java实现批量下载选中文件功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下

1.在action中定义变量

 private List downLoadPaths = new ArrayList();//存储选中文件的下载地址 private OutputStream res; private ZipOutputStream zos; private String outPath; private String lessionIdStr;// 选中文件ID拼接的字符串 private String fileName; //浏览器下载弹出框中显示的文件名 

  分别给出get和set方法

2.  主方法 

 /** * 下载多个文件:压缩成zip * * @return * @throws Exception */ public String downLoadLessionsZip() { downLoadPaths.clear(); String firstFileName = "";// 第一个文件的文件名 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  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中配置

 //class值为bean.xml中配置的bean  204//表示响应执行成功,但没有数据返回,浏览器不用刷新,不用导向新页面 

  用到的jar包

总结

以上就是Java实现批量下载选中文件功能的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java