Java 下载zip文件
选中文件打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文件相关推荐
- java下载zip文件损坏_使用Java下载.zip文件会导致损坏的.zip文件?
我写了这个方法来下载最新的Selenium Chrome驱动程序,它不起作用.它导致损坏的.zip文件.任何人都可以发现我的错误在哪里?使用Java下载.zip文件会导致损坏的.zip文件? priv ...
- java 下载zip文件_Java以压缩包方式下载文件
从云服务器上下载文件,以压缩包方式下载 以下载多个文件为例,需要导入zip4j的jar包,版本不要太高 public void downloadZip(List list, HttpServletRe ...
- java 操作Zip文件(压缩、解压、加密)
java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...
- Java实现Zip文件的解压和压缩_ZipUtil
这是一个关于Java的zip文件的解压和压缩工具类,里面除了解压和压缩还有删除.copy等其他功能. 在Java开发中,经常会遇到上传下载,有可能就会遇到解压,于是我就封装了工具类,方便使用. 在本文 ...
- php+下载+网路错误,下载zip文件“网络错误失败”(PHP / NGINX)
当我尝试从我的实时服务器下载zip文件时,我的浏览器(Chrome和Firefox)出现以下错误:https://mysite.com:网络错误失败. 令人困惑的是,在我的localhost上使用我的 ...
- java下载网络中的文件,java下载网络文件解决思路
java下载网络文件 下面这段代码是下载一个http网络文件的代码,但有时候下载下来的图片是完整的,有时候下载下来的不完整,还有下载的ppt,pdf之类,也是打不开的.请大件们给指导一下,小弟感激不尽 ...
- Java实现Zip文件解压
2019独角兽企业重金招聘Python工程师标准>>> ##1. 两种java实现zip文件解压方式 使用JDK的原生类java.util.zip,上代码: import java. ...
- java zip文件操作,java 关于 zip 文件 的 基本操作
这里用的是appache的包 为了防止文件中文名乱码问题 java 操作 .zip 文件 压缩文件 解压文件 删除文件夹等 package com.gaeainfo.toponymbase.uti ...
- 如何通过Java下载远程文件到浏览器
如何通过Java下载远程文件到浏览器 整体思路: 首先获取远程资源的文件输入流,使用HttpServletResponse的输出流,通过Java io转换将输入流转成输出流,写入指定文件,下载到浏览器 ...
最新文章
- mysql embed_html中object和embed标签的区别
- DataGridView新特色、常用操作
- gcc命令-更新中....
- php限制ip访问次数 并发_[转]nginx限制某个IP同一时间段的访问次数
- 静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数
- 别眨眼!AI 通过自学秒解魔方,比人类纪录快两倍
- 状态模式(State Pattern)
- 运行Android项目时指定特定的AVD进行测试
- 【转载】福昕PDF电子文档处理套件 企业版 注册码 注册方法
- Android ndk开发C调用C++
- erdas几何校正_遥感图像的几何校正
- 广州搬砖第三年,从一枚小菜鸡到架构师
- 哄女朋友必备之微信自动发红包脚本(python+adb+androidviewclient)
- 一个男人写给前女友的话。。。真心哭了
- nodejs的http请求是报错 socket hang up
- IT男拒绝枯燥系列之《漫画电子电路》!
- 如何输入一串带空格的字符串?
- 微信小程序学习(一):开发准备、授权与验证
- 【Impala】根据当前日期取去年、今年、上月、日期差
- 责任与任务--感谢航空线福亮和福生的分享
热门文章
- Word编辑论文,实现1.题目、摘要、关键词为通栏,正文为双栏 2.首页底端添加通栏脚注,在脚注中写作者简介,并使其实现悬挂对齐效果
- 谨防上当:揭露那些披着大数据外衣的假大数据课程
- lightroom安卓_安卓手机版LR预设精选54款,附v5.4.1版apk
- 风速仪原理是什么你知道么?
- UNP学习第一步:unp.h的安装及第一个程序的运行
- Win 10 打印机active directory域服务当前不可用解决方法
- 什么是边缘服务器?边缘计算的未来如何?
- honor荣耀怎么样?
- rebar3使用本地依赖
- Tkinter Frame大小设置不起作用