广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java实现文件打包压缩输出到浏览器下载
  • 683
分享到

java实现文件打包压缩输出到浏览器下载

2024-04-02 19:04:59 683人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

文件打包压缩输出到浏览器下载 java批量下载文件打包压缩工具类,输出到浏览器下载,可以自己改名。 一、工具类: 入参 :文件LIst ;打包后的名字 ;响应到浏览器

文件打包压缩输出到浏览器下载

java批量下载文件打包压缩工具类,输出到浏览器下载,可以自己改名。

一、工具类:

入参 :文件LIst ;打包后的名字 ;响应到浏览器



    public void zipFiles(List<File> srcfile, String zipFileName, httpservletResponse response) throws ioException {
        byte[] buf = new byte[1024];
        // 获取输出流
        BufferedOutputStream bos = null;
        try {
            bos = new BufferedOutputStream(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileInputStream in = null;
        ZipOutputStream out = null;
        try {
            response.reset(); // 重点突出
            // 不同类型的文件对应不同的MIME类型
            response.setContentType("application/x-msdownload");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + zipFileName + ".zip");
 
            // ZipOutputStream类:完成文件或文件夹的压缩
            out = new ZipOutputStream(bos);
            for (int i = 0; i < srcfile.size(); i++) {
                in = new FileInputStream(srcfile.get(i));
                // 给列表中的文件单独命名
                out.putNextEntry(new ZipEntry(srcfile.get(i).getName()));
                int len = -1;
                while ((len = in.read(buf)) != -1) {
                    out.write(buf, 0, len);
                }
            }
            out.close();
            bos.close();
            log.info("压缩完成.");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) in.close();
            if (out != null) out.close();
        }
    }

二、调用


zipFiles(files, zipName, response);

生成zip文件并浏览器导出

总结一下,关于Java下载zip文件并导出的方法,浏览器导出。


     String downloadName = "下载文件名称.zip";
        downloadName = BrowserCharCodeUtils.browserCharCodeFun(request, downloadName);//下载文件名乱码问题解决
        
        //将文件进行打包下载
        try {
            OutputStream out = response.getOutputStream();
            byte[] data = createZip("/fileStorage/download");//服务器存储地址
            response.reset();
            response.setHeader("Content-Disposition","attachment;fileName="+downloadName);
            response.addHeader("Content-Length", ""+data.length);
            response.setContentType("application/octet-stream;charset=UTF-8");
            IOUtils.write(data, out);
            out.flush();
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

获取下载zip文件流


public byte[] createZip(String srcSource) throws Exception{
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        ZipOutputStream zip = new ZipOutputStream(outputStream);
        //将目标文件打包成zip导出
        File file = new File(srcSource); 
        a(zip,file,"");
        IOUtils.closeQuietly(zip);
        return outputStream.toByteArray();
    }

public void a(ZipOutputStream zip, File file, String dir) throws Exception {
            //如果当前的是文件夹,则进行进一步处理
            if (file.isDirectory()) {
                //得到文件列表信息
                File[] files = file.listFiles();
                //将文件夹添加到下一级打包目录
                zip.putNextEntry(new ZipEntry(dir + "/"));
                dir = dir.length() == 0 ? "" : dir + "/";
                //循环将文件夹中的文件打包
                for (int i = 0; i < files.length; i++) {
                    a(zip, files[i], dir + files[i].getName());         //递归处理
                }
            } else {   //当前的是文件,打包处理
                //文件输入流
               BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
               ZipEntry entry = new ZipEntry(dir);
               zip.putNextEntry(entry);
               zip.write(FileUtils.readFileToByteArray(file));
               IOUtils.closeQuietly(bis);
               zip.flush();
               zip.closeEntry();
            }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: java实现文件打包压缩输出到浏览器下载

本文链接: https://www.lsjlt.com/news/157514.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java实现文件打包压缩输出到浏览器下载
    文件打包压缩输出到浏览器下载 java批量下载文件打包压缩工具类,输出到浏览器下载,可以自己改名。 一、工具类: 入参 :文件LIst ;打包后的名字 ;响应到浏览器 ...
    99+
    2022-11-12
  • Vue实现文件批量打包压缩下载
    上次做了一个选择多个数据生成多个二维码并下载,当时项目催的紧,就简单写了个循环生成二维码下载,一次性会下载很多文件,特别难整理; 刚好这次项目又遇到类似这种功能,需要一次性批量下载多...
    99+
    2022-11-13
  • 使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载
    使用hutool工具(ZipUtil)对多文件打包压缩并通过浏览器下载 使用hutool工具对多文件进行打包压缩并下载 需求 工作中遇到需要将详情页面数据导出为word,同时详情中有图片和附件,由于附...
    99+
    2023-09-26
    java 开发语言
  • Java 实现浏览器下载文件及文件预览
    插曲想记录一下,以后可以来粘贴复制用。 一、浏览器下载文件 setContentType() 该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。 没有缓存 resp...
    99+
    2022-11-12
  • java实现下载文件到默认浏览器路径
    目录下载文件到默认浏览器路径Selenium修改浏览器默认下载路径下载文件到默认浏览器路径 在controller接口入参直接传HttpServletResponse respons...
    99+
    2022-11-13
  • HTML5拖拽文件到浏览器并实现文件上传下载功能
    本篇内容主要讲解“HTML5拖拽文件到浏览器并实现文件上传下载功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5拖拽文件到浏览器并实现文件上传下载功能...
    99+
    2022-10-19
  • JS中如何使用gulp实现压缩文件及浏览器热加载功能
    小编给大家分享一下JS中如何使用gulp实现压缩文件及浏览器热加载功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!gulp类似...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作