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

    在日常项目开发中,我们会经常遇到,上传下载以及打包的常用功能,本节中就如何利用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包中,以供客户端进行下载保存!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

apicescn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值