引用
java自带的类库,实现zip压缩打包文件下载,注:不支持中文文件名(下面是我的完整下载servlet下载类代码,改下自己的包名即可使用)
- package com.kedacom.kdkk.controller.querymanager;
- 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.*;
- public class BatchDownload extends HttpServlet {
- public BatchDownload() {
- super();
- }
- 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[2];
- files[0]=new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/1.jpg");
- files[1]=new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/2.jpg");
- zipFile(files, "", zos);
- zos.flush();
- zos.close();
- }
- private void zipFile(File[] subs, String baseName, ZipOutputStream zos) throws IOException {
- for (int i=0;i<subs.length;i++) {
- File f=subs[i];
- zos.putNextEntry(new ZipEntry(baseName + f.getName()));
- FileInputStream fis = new FileInputStream(f);
- byte[] buffer = new byte[1024];
- int r = 0;
- while ((r = fis.read(buffer)) != -1) {
- zos.write(buffer, 0, r);
- }
- fis.close();
- }
- }
- private String getZipFilename(){
- Date date=new Date();
- String s=date.getTime()+".zip";
- return s;
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- this.doGet(request, response);
- }
- }
引用
下面是web.xml里面对下载zip servlet的配置
- <servlet>
- <servlet-name>imgZipDownload</servlet-name>
- <servlet-class>com.kedacom.kdkk.controller.querymanager.BatchDownload</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>imgZipDownload</servlet-name>
- <url-pattern>/zipDownload.do</url-pattern>
- </servlet-mapping>
引用
下面是页面调用servlet
- <form action="zipDownload.do" method="post">
- <input type="submit" value="下载"/>
- </form>