JAVA-批量下载zip
案例一
    @ApiOperation(value = "根据id 批量下载文件", notes = "根据id 批量下载文件")
    @RequestMapping(value = "/downloadFiles/{id}", method = RequestMethod.GET)
    @ApiImplicitParam(name = "sheetId", value = "工单ID", required = true, dataType = "String", paramType = "path")
    public void downloadFiles(HttpServletRequest request, HttpServletResponse response, @PathVariable String id) throws Exception {
        List<OssMediaFile> list = null;
        try {
            EntityWrapper<OssMediaFile> wrapper = new EntityWrapper<>();
            wrapper.eq("id", id);
            wrapper.eq("is_delete", 0);
            list = this.baseService.selectList(wrapper);
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
            String header = request.getHeader("User-Agent").toUpperCase();
            String fileName = "附件" + String.valueOf(System.currentTimeMillis()) + ".zip";
            if (!header.contains("MSIE") && !header.contains("TRIDENT") && !header.contains("EDGE")) {
                fileName = new String(fileName.getBytes(), "ISO8859-1");
            } else {
                fileName = URLEncoder.encode(fileName, "utf-8");
                fileName = fileName.replace("+", "%20");
            }
            response.setContentType("multipart/form-data");
            response.setHeader("Content-disposition", "attachment; filename=" + fileName);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        try(ZipOutputStream zipOut = new ZipOutputStream(response.getOutputStream())) {
            for (int i = 0; i < list.size(); i++) {
                OssMediaFile mediaFile = list.get(i);
                logger.info("ossMediaFile参数:{}", JSONObject.toJSONString(mediaFile));
                InputStream is = null;
                try {
                    zipOut.putNextEntry(new ZipEntry(mediaFile.getFileName()));
                    String urlName = mediaFile.getFileUrl();
                    URL url = new URL(urlName);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    // 设置是否向HttpURLConnection输出
                    conn.setDoOutput(false);
                    // 设置是否从httpUrlConnection读入
                    conn.setDoInput(true);
                    /** 设置连接方式:GET */
                    conn.setRequestMethod("GET");
                    /** 设置连接主机服务器超时时间:5000毫秒 */
                    conn.setConnectTimeout(5000);
                    /** 发送GET方式请求,使用connet方法建立和远程资源之间的实际连接即可 */
                    conn.connect();
                    int status = conn.getResponseCode();
                    logger.info("---status:" + status);
                    if(status!= HttpURLConnection.HTTP_OK){
                        is = conn.getErrorStream();
                    }else{
                        is = conn.getInputStream();
                    }
                    if (null == is) {
                        continue;
                    }
                    int temp = 0;
                    while ((temp = is.read()) != -1) {
                        zipOut.write(temp);
                    }
                    is.close();
                    /** 关闭远程连接 */
                    conn.disconnect();
                } catch (IOException e) {
                    logger.error(e.getMessage(), e);
                }
            }
            zipOut.closeEntry();
            logger.info("一键下载结束");
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            throw new RuntimeException("附件下载失败");
        }
    }
JAVA-批量下载zip的更多相关文章
- java批量下载,将多文件打包成zip格式下载
		
现在的需求的: 根据产品族.产品类型,下载该产品族.产品类型下面的pic包: pic包是zip压缩文件: t_product表: 这些包以blob形式存在另一张表中: t_imagefile表: 现在 ...
 - Java批量下载文件并zip打包
		
客户需求:列表勾选需要的信息,点击批量下载文件的功能.这里分享下我们系统的解决方案:先生成要下载的文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器的下载功能即可完成批量下载的需求.以下是zi ...
 - java批量下载文件为zip包
		
批量下载文件为zip包的工具类 package com.meeno.trainsys.util; import javax.servlet.http.HttpServletRequest; impor ...
 - java批量下载
		
最近做了一些有关批量压缩下载的功能,网上也找了一些资源,但都不是太全面,所以自己整理一份,已备不时之需. 直接上代码: // 获取项目路径 private static String WEBC ...
 - Java  批量下载excel,并对excel赋值,压缩为zip文件(POI版)
		
package com.neusoft.nda.servlet; import java.io.File;import java.io.FileInputStream;import java.io.F ...
 - java+批量下载文件到指定文件夹
		
需求 导出文件后存留在了服务器中,需要提供下载按钮,点击后可下载到本地:(因为涉及多个文件,下载前先将文件进行压缩,提供下载压缩文件) 效果预览 代码 主要方法 /** * 下载生成的所有在线 ...
 - java+批量下载大文件
		
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...
 - JAVA 批量下载服务器文件到本地指定文件夹并重命名
		
/** * @功能 下载文件到指定文件夹并重命名 * @param url 请求的路径 * @param filePath 文件将要保存的目录 * @param filename 保存到本地的文件名 ...
 - java/resteasy批量下载存储在阿里云OSS上的文件,并打包压缩
		
现在需要从oss上面批量下载文件并压缩打包,搜了很多相关博客,均是缺胳膊少腿,要么是和官网说法不一,要么就压缩包工具类不给出 官方API https://help.aliyun.com/documen ...
 - Java批量文件打包下载zip
		
网上看了很多,本文使用ant.jar中的org.apache.tools.zip,页面用js表单提交 代码供参考: ACTION: /* * 另存为 */ @RequestMapping(" ...
 
随机推荐
- 【Linux】常用
			
查看端口占用 yum install lsof lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进程现在打 ...
 - java学习一:java介绍及第一个helloword程序
			
1.java语言介绍 java是一门后台开发语言 大型web语言系统开发,app后台服务首选开发语言 java这门语言大特点:跨平台,安全性高,有丰富的类库 核心思想:面向对象 2.Jdk介绍 3.为 ...
 - 第二性 合卷本 横本.PDF
			
书本详情 第二性台版 作者: 西蒙.德.波娃(Simone de Beauvoir)出版社: 貓頭鷹原作名: Le Deuxième Sexe译者: 邱瑞鑾出版年: 2013-10页数: 1136装帧 ...
 - AI-Chat问答随笔
			
Q: 操作系统和驱动的关系 A:操作系统和驱动程序是紧密相关的,它们一起构成了计算机系统中的软件部分,实现了对硬件资源的管理和控制.操作系统作为计算机系统的核心软件,主要负责管理和协调计算机系统中的各 ...
 - pytest(5)-自定义用例顺序(pytest-ordering)-后续学习
			
前言 测试用例在设计的时候,我们一般要求不要有先后顺序,用例是可以打乱了执行的,这样才能达到测试的效果. 有些同学在写用例的时候,用例写了先后顺序, 有先后顺序后,后面还会有新的问题(如:上个用例返回 ...
 - Android Studio Gradle 输出信息乱码
			
Android Studio Gradle 输出信息出现乱码 如下: > Task :app:compileDebugJavaWithJavacע: ijЩ�����ļ�ʹ�û����ѹ�ʱ�� ...
 - syntax_lead_x.txt
			
select lead( t1.field_date-1, 1, null ) over(partition by t1.field_str order by t1.field_str),*from ...
 - 简单理解gqrx是什么
			
gqrx:Gqrx是一个基于gnuradio和Qt架构,开发的一个开源的SDR接收机的应用.下图是他的一个运行界面: gnu radio GNU Radio是一个自由软件开发工具包,提供实现软件无线电 ...
 - Doris使用记录
			
创建分区表: CREATE TABLE `test_partitioned` ( `gmt_create` datetime NULL COMMENT "创建时间", `colum ...
 - R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据|附代码数据
			
全文链接:http://tecdat.cn/?p=30914 最近我们被客户要求撰写关于广义线性模型(GLM)的研究报告,包括一些图形和统计输出. 我们正和一位朋友讨论如何在R软件中用GLM模型处理全 ...