Servlet多文件打包下载
发布时间:2020-05-28 22:25:07 所属栏目:Java 来源:互联网
导读:Servlet多文件打包下载
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 package project;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.zip.*;
/**
* Servlet实现多文件打包下载
* @author Frank
*
*/
public class Download extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -1379339763454618902L;
public Download() {
super();
}
/**
* doPost提交方式
*/
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
this.doGet(request,response);
}
/**
* doGet提交方式
*/
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException {
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename="+ this.getZipFilename());
System.out.println("in BatchDownload................");
ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
File[] files = new File[3];
/*这里可以根据前台进行赋值,我这样做事为了快速做测试而已 */
files[0] = new File("F:/1111.png");
files[1] = new File("F:/11.png");
files[2] = new File("D:/testduo");
for(File f:files){
zipFile(f,"",zos);
}
zos.flush();
zos.close();
}
/**
* 使用递归进行文件夹,文件的扫描
*/
private void zipFile(File subs,String baseName,ZipOutputStream zos)throws IOException {
if(subs.exists()){
if(subs.isFile()){
zos.putNextEntry(new ZipEntry(baseName + subs.getName()));
FileInputStream fis = new FileInputStream(subs);
byte[] buffer = new byte[1024];
int r = 0;
while ((r = fis.read(buffer)) != -1) {
zos.write(buffer,r);
}
fis.close();
}else{
//如果是目录。递归查找里面的文件
String dirName = baseName + subs.getName() + "/";
zos.putNextEntry(new ZipEntry(dirName));
File[] sub = subs.listFiles();
for (File f : sub) {
zipFile(f,dirName,zos);
}
}
}
}
/**
* 获取zip文件名
* @return
*/
private String getZipFilename() {
Date date = new Date();
String s = date.getTime() + ".zip";
return s;
}
}
Web.xml配置 <?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Down</servlet-name>
<servlet-class>project.Download</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Down</servlet-name>
<url-pattern>/scripts/Down</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
</web-app>
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
