java实现批量下载
来源:互联网 发布:举重知乎 编辑:程序博客网 时间:2024/06/02 16:46
/**
* 批量下载
* @param response
* @param request
* @param filename 自定义的文件名
* @param url 文件路径
*/
public static int down(HttpServletResponse response,HttpServletRequest request,String filename,String[] url){
/**创建一个临时压缩文件,这里的文件你可以自定义是.rar还是.zip*/
String fileName=encodingFileName(filename);
File file = new File(fileName);
try {
if(!file.exists()){
file.createNewFile();
}
/**要是弹出那个下载的框, 就必须有下边这两项的设置了 */
response.reset();
response.addHeader("Content-Disposition", "attachment; filename="+fileName);
response.setContentType("application/octet-stream");
/**创建文件输出流*/
FileOutputStream fous = new FileOutputStream(file);
/**打包的方法我们会用到ZipOutputStream这样一个输出流,所以这里我们把输出流转换一下*/
ZipOutputStream zipOut = new ZipOutputStream(fous);
/**这个方法可以得到服务器的具体路径*/
String path=request.getSession().getServletContext().getRealPath("/");
/**这个方法接受的就是一个所要打包文件的集合或数组,还有一个ZipOutputStream*/
String dir="upload/";
for(int i=0;i<url.length;i++){
/**dir服务器的upload文件夹 若有可以不写 */
File files2 = new File(path+dir+url[i].replace("/", "\\"));
File[] files1={files2};
FileUtil.zipFile(files1, zipOut);
}
zipOut.close();
fous.close();
/**接下来的就是往客户端写数据了*/
OutputStream out = response.getOutputStream();
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(file.getPath()));
byte[] buf = new byte[8192];
int len = 0;
/**
* IE: out.write(buf,0,len);下载超出一个文件会出现异常,但是可以正常下载
* ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
* Firefox :可以正常运行, 目前还没有找到好的解决方法
*/
while ((len = bin.read(buf, 0, 8192)) != -1) {
out.write(buf, 0, len);
}
out.flush();
out.close();
} catch (IOException e) {
/**屏蔽异常信息*/
//e.printStackTrace();
}
return 1;
}
* 批量下载
* @param response
* @param request
* @param filename 自定义的文件名
* @param url 文件路径
*/
public static int down(HttpServletResponse response,HttpServletRequest request,String filename,String[] url){
/**创建一个临时压缩文件,这里的文件你可以自定义是.rar还是.zip*/
String fileName=encodingFileName(filename);
File file = new File(fileName);
try {
if(!file.exists()){
file.createNewFile();
}
/**要是弹出那个下载的框, 就必须有下边这两项的设置了 */
response.reset();
response.addHeader("Content-Disposition", "attachment; filename="+fileName);
response.setContentType("application/octet-stream");
/**创建文件输出流*/
FileOutputStream fous = new FileOutputStream(file);
/**打包的方法我们会用到ZipOutputStream这样一个输出流,所以这里我们把输出流转换一下*/
ZipOutputStream zipOut = new ZipOutputStream(fous);
/**这个方法可以得到服务器的具体路径*/
String path=request.getSession().getServletContext().getRealPath("/");
/**这个方法接受的就是一个所要打包文件的集合或数组,还有一个ZipOutputStream*/
String dir="upload/";
for(int i=0;i<url.length;i++){
/**dir服务器的upload文件夹 若有可以不写 */
File files2 = new File(path+dir+url[i].replace("/", "\\"));
File[] files1={files2};
FileUtil.zipFile(files1, zipOut);
}
zipOut.close();
fous.close();
/**接下来的就是往客户端写数据了*/
OutputStream out = response.getOutputStream();
BufferedInputStream bin = new BufferedInputStream(new FileInputStream(file.getPath()));
byte[] buf = new byte[8192];
int len = 0;
/**
* IE: out.write(buf,0,len);下载超出一个文件会出现异常,但是可以正常下载
* ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
* Firefox :可以正常运行, 目前还没有找到好的解决方法
*/
while ((len = bin.read(buf, 0, 8192)) != -1) {
out.write(buf, 0, len);
}
out.flush();
out.close();
} catch (IOException e) {
/**屏蔽异常信息*/
//e.printStackTrace();
}
return 1;
}
- java实现批量下载
- 用java实现批量下载选中文件
- python实现批量下载
- 【Java】Java实现批量打包文件Zip下载
- java批量下载
- java 批量下载文件
- java 批量下载文件
- java批量下载
- java 批量下载文件
- java批量下载文件
- JAVA批量下载
- java打包批量下载
- Java实现批量下载《神秘的程序员》漫画
- 网页分析实现批量下载
- java后台创建压缩包&使用浏览器下载文件(批量下载实现)
- java后台创建压缩包&使用浏览器下载文件(批量下载实现)
- Java批量下载zip文件
- JAVA上传批量下载文件
- 【自己动手写数据结构】 -- 有向带权图的邻接矩阵存储的简单实现
- 剖析 Linux hypervisor
- hbase使用中一个问题
- #hive_正则表达式#JAVA的正则表达式案例详解
- mknod 命令
- java实现批量下载
- qt的右键扩展,继承contextMenuEvent
- 【划分树】MinimumSum
- POJ 3347 特殊方法
- std::string的Copy-on-Write:不如想象中美好 转载
- 2013年4月_武科大程序设计大赛(复赛-非专业组)_解题报告(problem 1001)
- 未登录用户自动跳回登陆界面——拦截器interceptor
- uva_11729_Commando War(貪心)
- 分区:在线重定义:DBMS_REDEFINITION