选中文件打zip包下载

前台:文件列表,选中文件,传文件ID集合传到后台

后台:

//接受到文件ID集合,查询出文件urlList

List attachFileList = bookService.findAttachFileList(ids);

List strFiles = new ArrayList();

for(AttachFile attachFile : attachFileList){

strFiles.add(attachFile.getAttachFileUrl());

}

//调用打包工具类进行下载

ZipUtil.ZipFiles(getRequest(), getResponse(), strFiles, UUID.randomUUID().toString()+".zip");

直接下载zip包 zipUtil也有

/zipUtil ↓↓↓

package com.jk.book.util;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.tools.zip.ZipEntry;

import org.apache.tools.zip.ZipOutputStream;

public class ZipUtil {

/**

  • 把文件打成压缩包并保存在本地硬盘

  • @param srcfile

  • @param zipPath

*/

public static void ZipFiles(List srcfiles, String zipPath) {

byte[] buf = new byte[4096];ZipOutputStream out = null;try {// 创建zip输出流out = new ZipOutputStream(new FileOutputStream(zipPath));// 循环将源文件列表添加到zip文件中for (int i = 0; i < srcfiles.size(); i++) {File file = new File(srcfiles.get(i));FileInputStream in = new FileInputStream(file);String fileName = file.getName();// 将文件名作为zip的Entry存入zip文件中out.putNextEntry(new ZipEntry(fileName));int len;while ( (len = in.read(buf)) > 0) {out.write(buf, 0, len);}out.closeEntry();in.close();}}catch (IOException e) {e.printStackTrace();} finally {if (null != out) {try {

out.close();

out = null;

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}}

}

/**

  • 把文件打成压缩包并输出到客户端浏览器中

  • @param request

  • @param response

  • @param srcFiles

  • @param downloadZipFileName

*/

public static void ZipFiles(HttpServletRequest request, HttpServletResponse response, List srcFiles, String downloadZipFileName) {

byte[] buf = new byte[4096];try {// Create the ZIP file// ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipPath));ZipOutputStream out = new ZipOutputStream(response.getOutputStream());//--设置成这样可以不用保存在本地,再输出, 通过response流输出,直接输出到客户端浏览器中。// Compress the filesif (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0) {downloadZipFileName = new String(downloadZipFileName.getBytes("GB2312"),"ISO-8859-1");} else {// 对文件名进行编码处理中文问题downloadZipFileName = java.net.URLEncoder.encode(downloadZipFileName, "UTF-8");// 处理中文文件名的问题downloadZipFileName = new String(downloadZipFileName.getBytes("UTF-8"), "GBK");// 处理中文文件名的问题}response.reset(); // 重点突出response.setCharacterEncoding("UTF-8"); // 重点突出response.setContentType("application/x-msdownload");// 不同类型的文件对应不同的MIME类型 // 重点突出// inline在浏览器中直接显示,不提示用户下载// attachment弹出对话框,提示用户进行下载保存本地// 默认为inline方式response.setHeader("Content-Disposition", "attachment;filename="+downloadZipFileName);for (int i = 0; i < srcFiles.size(); i++) {File file = new File(srcFiles.get(i));FileInputStream in = new FileInputStream(file);// Add ZIP entry to output stream.String fileName = file.getName();out.putNextEntry(new ZipEntry(fileName));// Transfer bytes from the file to the ZIP fileint len;while ( (len = in.read(buf)) > 0) {out.write(buf, 0, len);}// Complete the entryout.closeEntry();in.close();}// Complete the ZIP fileout.close();System.out.println("压缩完成.");}catch (IOException e) {e.printStackTrace();}

}

public static void main(String[] args) {

List srcFiles = new ArrayList();

srcFiles.add(“c:/codetemplates.xml”);

srcFiles.add(“d:/t1.png”);

ZipFiles(srcFiles, “c:/mm.zip”);

}

}

转载于:www.iqilun.com

Java 下载zip文件相关推荐

  1. java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?

    我写了这个方法来下载最新的Selenium Chrome驱动程序,它不起作用.它导致损坏的.zip文件.任何人都可以发现我的错误在哪里?使用Java下载.zip文件会导致损坏的.zip文件? priv ...

  2. java 下载zip文件_Java以压缩包方式下载文件

    从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...

  3. java 操作Zip文件(压缩、解压、加密)

    java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...

  4. Java实现Zip文件的解压和压缩_ZipUtil

    这是一个关于Java的zip文件的解压和压缩工具类,里面除了解压和压缩还有删除.copy等其他功能. 在Java开发中,经常会遇到上传下载,有可能就会遇到解压,于是我就封装了工具类,方便使用. 在本文 ...

  5. php+下载+网路错误,下载zip文件“网络错误失败”(PHP / NGINX)

    当我尝试从我的实时服务器下载zip文件时,我的浏览器(Chrome和Firefox)出现以下错误:https://mysite.com:网络错误失败. 令人困惑的是,在我的localhost上使用我的 ...

  6. java下载网络中的文件,java下载网络文件解决思路

    java下载网络文件 下面这段代码是下载一个http网络文件的代码,但有时候下载下来的图片是完整的,有时候下载下来的不完整,还有下载的ppt,pdf之类,也是打不开的.请大件们给指导一下,小弟感激不尽 ...

  7. Java实现Zip文件解压

    2019独角兽企业重金招聘Python工程师标准>>> ##1. 两种java实现zip文件解压方式 使用JDK的原生类java.util.zip,上代码: import java. ...

  8. java zip文件操作,java 关于 zip 文件 的 基本操作

    这里用的是appache的包  为了防止文件中文名乱码问题 java 操作 .zip 文件  压缩文件 解压文件 删除文件夹等 package com.gaeainfo.toponymbase.uti ...

  9. 如何通过Java下载远程文件到浏览器

    如何通过Java下载远程文件到浏览器 整体思路: 首先获取远程资源的文件输入流,使用HttpServletResponse的输出流,通过Java io转换将输入流转成输出流,写入指定文件,下载到浏览器 ...

最新文章

  1. mysql embed_html中object和embed标签的区别
  2. DataGridView新特色、常用操作
  3. gcc命令-更新中....
  4. php限制ip访问次数 并发_[转]nginx限制某个IP同一时间段的访问次数
  5. 静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数
  6. 别眨眼!AI 通过自学秒解魔方,比人类纪录快两倍
  7. 状态模式(State Pattern)
  8. 运行Android项目时指定特定的AVD进行测试
  9. 【转载】福昕PDF电子文档处理套件 企业版 注册码 注册方法
  10. Android ndk开发C调用C++
  11. erdas几何校正_遥感图像的几何校正
  12. 广州搬砖第三年,从一枚小菜鸡到架构师
  13. 哄女朋友必备之微信自动发红包脚本(python+adb+androidviewclient)
  14. 一个男人写给前女友的话。。。真心哭了
  15. nodejs的http请求是报错 socket hang up
  16. IT男拒绝枯燥系列之《漫画电子电路》!
  17. 如何输入一串带空格的字符串?
  18. 微信小程序学习(一):开发准备、授权与验证
  19. 【Impala】根据当前日期取去年、今年、上月、日期差
  20. 责任与任务--感谢航空线福亮和福生的分享

热门文章

  1. Word编辑论文,实现1.题目、摘要、关键词为通栏,正文为双栏 2.首页底端添加通栏脚注,在脚注中写作者简介,并使其实现悬挂对齐效果
  2. 谨防上当:揭露那些披着大数据外衣的假大数据课程
  3. lightroom安卓_安卓手机版LR预设精选54款,附v5.4.1版apk
  4. 风速仪原理是什么你知道么?
  5. UNP学习第一步:unp.h的安装及第一个程序的运行
  6. Win 10 打印机active directory域服务当前不可用解决方法
  7. 什么是边缘服务器?边缘计算的未来如何?
  8. honor荣耀怎么样?
  9. rebar3使用本地依赖
  10. Tkinter Frame大小设置不起作用