[Java Web]服务器获取远程文件并Zip打包给客户端下载

简介: 一、应用场景 客服端请求下载,服务器B从服务器A中获得远程文件Url,服务器B通过服务器A获取的Url拿到文件后,在服务器B中处理,进行Zip打包,并在客户端中响应给客户端,完成Zip文件下载。

一、应用场景
客服端请求下载,服务器B从服务器A中获得远程文件Url,服务器B通过服务器A获取的Url拿到文件后,在服务器B中处理,进行Zip打包,并在客户端中响应给客户端,完成Zip文件下载。

二、思路代码

        File file1 = new File(“这里使用File构造方法实例化File对象”);

        File file2 = new File(“这里使用File构造方法实例化File对象”);

        File [] tarFile = {file1,file2};//将多个文件放入File数组

        String zipName = doZIP("zipname",tarFile);//这里,我写了一个将多个文件打包为zip的方法doZip(),doZip()返回生成的zip路径

        response.setCharacterEncoding("utf-8");//设置编码统一
        response.setContentType("multipart/form-data");//设置multipart
        //响应头部
        response.setHeader("Content-disposition", "attachment;filename=order_" + “设置一个文件名” + ".zip");
        InputStream inputStreamzip = new FileInputStream(new File(zipName));//通过zip路径实例化inputStream流

        OutputStream os = response.getOutputStream();
        byte[] b = new byte[2048];
        int length;
        while ((length = inputStreamzip.read(b)) > 0) {
            os.write(b, 0, length);
        }
        os.close();
        inputStreamzip.close();

接下来就是doZip()方法:

    /*文件打包zip*/
    public String doZIP(String zipname, File [] files) throws Exception{
    //doZIP(命名的打包文件名,传递过来的File数组)
        byte[] buffer = new byte[1024];

        String strZipName = zipname;

        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipName));

        for(int i=0;i<files.length;i++) {

            FileInputStream fis = new FileInputStream(files[i]);

            out.putNextEntry(new ZipEntry(files[i].getName()));

            int len;

            //读入需要下载的文件的内容,打包到zip文件

            while((len = fis.read(buffer))>0) {

                out.write(buffer,0,len);

            }

            out.closeEntry();

            fis.close();

        }

        out.close();

        return strZipName;
    }

这里注意一下,打包为zip我用了两个包

import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

整体,其实还是,使用zip包,对File数组进行处理,将数组中的所用文件循环处理,一起打包为zip。

目录
相关文章
|
21小时前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
13 4
|
6天前
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
|
17天前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
24 1
|
23天前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
58 4
|
23天前
|
Java Shell Maven
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
Flink-11 Flink Java 3分钟上手 打包Flink 提交任务至服务器执行 JobSubmit Maven打包Ja配置 maven-shade-plugin
81 4
|
25天前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
39 3
|
24天前
|
Java
java 文件上传和下载
java 文件上传和下载
18 0
|
Java Maven 数据安全/隐私保护
【jar】JDK将单个的java文件打包为jar包,并引用到项目中使用【MD5加密】
========================================================================================================================= 后文心得附录:【实际操作使用过程中的使用心得】   1.
1443 0
|
Java 中间件
【JAVA系列】打包Class文件生成Jar包
【JAVA系列】打包Class文件生成Jar包
120 0
java项目打包,如何将使用到的jar包打入到项目的jar包中(适用于不方便添加lib到目标服务的情况)
java项目打包,如何将使用到的jar包打入到项目的jar包中(适用于不方便添加lib到目标服务的情况)
193 0