【转载】Java如何实现文件打包下载功能

来源:互联网 发布:设ab均为二阶矩阵 编辑:程序博客网 时间:2024/06/01 08:09

在日常项目开发中,我们会经常遇到,上传下载以及打包的常用功能,本节中就如何利用JAva自带的类库,实现zip压缩打包文件下载进行详细说明。注:不支持中文文件名,可在上传时就重命名文件名称.(下面是我的完整项目下载类代码,改下自己的包名即可使用)

正题:

中间层Java代码:

package com.etong.out.web;    import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.IOException;  import java.io.InputStream;  import java.sql.SQLException;  import java.util.Date;  import java.util.HashMap;     import java.util.zip.ZipEntry;  import java.util.zip.ZipException;  import java.util.zip.ZipOutputStream;    public class ZipUtils {        private String fileName;               public 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();              zos.flush();                  zos.close();            }         }             public String getZipFileName() {          return fileName;      }        public void setZipFileName(String fileName) {             this.fileName = fileName+new Date().getTime()+".zip";      }        }  
JSP引用方法:

<%      SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd_hhMMss");      response.setHeader("Content-disposition","attachment;filename=JMS"+f.format(new Date())+".zip");                ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());      List jmsList = (List)workflowCommonDao.getListResult("OutNet.getNsrJmsWjxx",null);        File[] files = new File[jmsList.size()];      for(int i=0; i<jmsList.size(); i++){          String inputStream = ((HashMap)jmsList.get(i)).get("WJDZ").toString();          files[i]=new File(inputStream);        }       ZipUtils zipUtil = new ZipUtils();      zipUtil.zipFile(files,"JmsFiles/", zos);           zos.flush();           zos.close();        %>  


0 0