- 论坛徽章:
- 0
|
JAVA ZIP压缩打包下载
引用
java自带的类库,实现zip压缩打包文件下载(下面是我的完整下载servlet下载类代码,改下自己的包名即可使用)
Java代码- 1.package com.kedacom.kdkk.controller.querymanager;
- 2.
- 3.import java.io.File;
- 4.import java.io.FileInputStream;
- 5.import java.io.IOException;
- 6.import java.util.Date;
- 7.
- 8.import javax.servlet.ServletException;
- 9.import javax.servlet.http.HttpServlet;
- 10.import javax.servlet.http.HttpServletRequest;
- 11.import javax.servlet.http.HttpServletResponse;
- 12.import java.util.zip.*;
- 13.public class BatchDownload extends HttpServlet {
- 14.
- 15. public BatchDownload() {
- 16. super();
- 17. }
- 18.
- 19. public void doGet(HttpServletRequest request, HttpServletResponse response)
- 20. throws ServletException, IOException {
- 21. response.setContentType("APPLICATION/OCTET-STREAM");
- 22. response.setHeader("Content-Disposition","attachment; filename="+this.getZipFilename());
- 23. System.out.println("in BatchDownload................");
- 24. ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
- 25. File[] files = new File[2];
- 26. files[0]=new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/1.jpg");
- 27. files[1]=new File("D:/OptiCM-POC/KDKK3Project/KDKK/images/2.jpg");
- 28. zipFile(files, "", zos);
- 29. zos.flush();
- 30. zos.close();
- 31.
- 32. }
- 33. private void zipFile(File[] subs, String baseName, ZipOutputStream zos) throws IOException {
- 34. for (int i=0;i<subs.length;i++) {
- 35. File f=subs[i];
- 36. zos.putNextEntry(new ZipEntry(baseName + f.getName()));
- 37. FileInputStream fis = new FileInputStream(f);
- 38. byte[] buffer = new byte[1024];
- 39. int r = 0;
- 40. while ((r = fis.read(buffer)) != -1) {
- 41. zos.write(buffer, 0, r);
- 42. }
- 43. fis.close();
- 44. }
- 45. }
- 46. private String getZipFilename(){
- 47. Date date=new Date();
- 48. String s=date.getTime()+".zip";
- 49. return s;
- 50. }
- 51.
- 52. public void doPost(HttpServletRequest request, HttpServletResponse response)
- 53. throws ServletException, IOException {
- 54. this.doGet(request, response);
- 55. }
- 56.}
- 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的配置
Java代码- 1.<servlet>
- 2. <servlet-name>imgZipDownload</servlet-name>
- 3. <servlet-class>com.kedacom.kdkk.controller.querymanager.BatchDownload</servlet-class>
- 4. </servlet>
- 5. <servlet-mapping>
- 6. <servlet-name>imgZipDownload</servlet-name>
- 7. <url-pattern>/zipDownload.do</url-pattern>
- 8. </servlet-mapping>
- <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
Java代码- 1.<form action="zipDownload.do" method="post">
- 2. <input type="submit" value="下载"/>
- 3. </form>
复制代码 |
|