您的位置:首页 > 编程语言 > Java开发

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

2014-07-15 15:17 627 查看
在日常项目开发中,我们会经常遇到,上传下载以及打包的常用功能,本节中就如何利用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();

%>
根据上述内容轻松完成了文件打包下载功能,这里JSP页面通过从数据库里面获得文件地址(当然也可以自己传相关文件路径)将相关文件打包至定义的zip包中,以供客户端进行下载保存!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: