微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java实现批量下载 多文件打包成zip格式下载

这篇文章主要为大家详细介绍了java实现批量下载、将多文件打包成zip格式下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现批量下载的具体代码,供大家参考,具体内容如下

现在的需求的:

根据产品族、产品类型,下载该产品族、产品类型下面的pic包;

pic包是zip压缩文件

t_product表:

这些包以blob形式存在另一张表中:

t_imagefile表:

现在要做的是:将接入网、OLT下面的两个包downloadPIC:MA5800系列-pic.zip 和 MA5900-pic.rar一起打包成zip压缩文件下载下来;

代码

ProductController.java:

/** * 根据产品族、产品类型下载照片包 */ @RequestMapping("/downloadwBatch") public void downloadwBatch(HttpServletRequest request, HttpServletResponse response, String productFamily, String productType){ //http://localhost:8080/MySSM/downloadwBatch?productFamily=接入网&productType=OLT try { productFamily = new String(productFamily.getBytes("iso-8859-1"), "utf-8"); productType = new String(productType.getBytes("iso-8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printstacktrace(); } //获取要下载的照片包名 Map params = new HashMap(); params.put("productFamily", productFamily); params.put("productType", productType); List packageNames = productService.getPackageNamesByFamilyAndType(params); //根据包名获取待下载的文件 文件名-字节数组的形式 Map files = new HashMap(); for(String packageName : packageNames){ byte[] f = productService.getPackage(packageName); if(f!=null){ files.put(packageName, f); } } //设置下载的压缩包名 String zipName = productFamily + "_"+ productType + ".zip"; //根据文件,进行压缩,批量下载 if(files.size() > 0){ productService.downloadBatchByFile(response, files, zipName); } }

ProductService.java:

/** * 根据包名获取文件 */ public byte[] getPackage(String packageName){ byte[] bag = null; try{ ImageFile m = productMapper.getPackage(packageName); if(m!=null){ bag = m.getPicture(); } }catch(Exception e){ e.printstacktrace(); } return bag; } /** * 根据产品族、产品类型 获取待下载的包名 * @param params * @return */ public List getPackageNamesByFamilyAndType(Map params) { List packageNames = productMapper.getPackageNamesByFamilyAndType(params); return packageNames; } /** * 根据文件,进行压缩,批量下载 * @param response * @param files * @throws Exception */ public void downloadBatchByFile(HttpServletResponse response, Map files, String zipName){ try{ response.setContentType("application/x-msdownload"); response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(zipName, "utf-8")); ZipOutputStream zos = new ZipOutputStream(response.getoutputStream()); bufferedoutputstream bos = new bufferedoutputstream(zos); for(Entry entry : files.entrySet()){ String fileName = entry.getKey(); //每个zip文件名 byte[] file = entry.getValue(); //这个zip文件的字节 BufferedInputStream bis = new BufferedInputStream(new ByteArrayInputStream(file)); zos.putNextEntry(new ZipEntry(fileName)); int len = 0; byte[] buf = new byte[10 * 1024]; while( (len=bis.read(buf, 0, buf.length)) != -1){ bos.write(buf, 0, len); } bis.close(); bos.flush(); } bos.close(); }catch(Exception e){ e.printstacktrace(); } }

ProductMapper.java:

/** * 根据包名获取文件 */ public ImageFile getPackage(String packageName) throws Exception; /** * 据产品族、产品类型 获取待下载的包名 */ public List getPackageNamesByFamilyAndType(Map params);

ProductMapper.xml:

select * from t_imagefile where packageName = #{packageName} select packageName from t_imagefile m join t_product p on m.packageName = p.downloadPic where p.productFamily = #{productFamily} and p.productType = #{productType}

测试:

在浏览器中输入:http://localhost:8080/MySSM/downloadwBatch?productFamily=接入网&productType=OLT

下载结果如下:

简单的demo

package com.msznyl; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Download { public static void main(String[] args) { //需要压缩的文件--包括文件地址和文件名 String [] path ={"E:\360DocProtect\01.txt","E:\360DocProtect\02.docx"}; // 要生成的压缩文件地址和文件名称 String desPath = "D:\DOWNLOADS\new.zip"; File zipFile = new File(desPath); ZipOutputStream zipStream = null; FileInputStream zipSource = null; Buffered上一篇:java对于目录下文件的单词查找操作代码实现下一篇:SpringMVC实现文件上传与下载 热门搜索

批量下载文件 

批量下载 

servlet实现文件下载 

zip下载 

文件下载 

相关文章

java实现批量下载 多文件打包成zip格式下载

2021-09-10阅读(7236)评论(0)推荐()

这篇文章主要为大家详细介绍了java实现批量下载、将多文件打包成zip格式下载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Java实现批量下载(打包成zip)的实现

2021-10-11阅读(3437)评论(0)推荐()

这篇文章主要介绍了Java实现批量下载(打包成zip)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

JAVA 根据Url把多文件打包成ZIP下载实例

2021-10-06阅读(7407)评论(0)推荐()

这篇文章主要介绍了JAVA 根据Url把多文件打包成ZIP下载的相关资料,需要的朋友可以参考下

vue将文件/图片批量打包下载zip的教程

2021-10-09阅读(6035)评论(0)推荐()

这篇文章主要介绍了vue将文件/图片批量打包下载zip的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

PHP/ThinkPHP实现批量打包下载文件方法示例

2021-10-11阅读(7751)评论(0)推荐()

最近因为工作的需要,要根据条件自动打包供下载的功能,查找相关资料终于解决了,所以下面这篇文章主要给大家介绍了利用PHP或者ThinkPHP如何实现批量打包下载文...

java后台批量下载文件并压缩成zip下载的方法

2021-10-06阅读(10134)评论(0)推荐()

这篇文章主要为大家详细介绍了java后台批量下载文件并压缩成zip下载的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

java文件下载代码实例(单文件下载和多文件打包下载)

2021-09-19阅读(3528)评论(0)推荐()

这篇文章主要介绍了java文件下载代码实例(单文件下载和多文件打包下载),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

取消

有人回复邮件通知

提交评论

© 2021 编程之家 

工信部备案号:琼ICP备2022000316号

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐