`

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

 
阅读更多

压缩文件代码工具类:

 

public class UrlFilesToZip {
    private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class);

    //根据文件链接把文件下载下来并且转成字节码
    public byte[] getImageFromURL(String urlPath) {
        byte[] data = null;
        InputStream is = null;
        HttpURLConnection conn = null;
        try {
            URL url = new URL(urlPath);
            conn = (HttpURLConnection) url.openConnection();
            conn.setDoInput(true);
            // conn.setDoOutput(true);
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(6000);
            is = conn.getInputStream();
            if (conn.getResponseCode() == 200) {
                data = readInputStream(is);
            } else {
                data = null;
            }
        } catch (MalformedURLException e) {
            logger.error("MalformedURLException", e);
        } catch (IOException e) {
            logger.error("IOException", e);
        } finally {
            try {
                if (is != null) {
                    is.close();
                }
            } catch (IOException e) {
                logger.error("IOException", e);
            }
            conn.disconnect();
        }
        return data;
    }


    public byte[] readInputStream(InputStream is) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int length = -1;
        try {
            while ((length = is.read(buffer)) != -1) {
                baos.write(buffer, 0, length);
            }
            baos.flush();
        } catch (IOException e) {
            logger.error("IOException", e);
        }
        byte[] data = baos.toByteArray();
        try {
            is.close();
            baos.close();
        } catch (IOException e) {
            logger.error("IOException", e);
        }
        return data;
    }
}

 

 

控制层代码:

 

public void filesdown(HttpServletResponse response){
 try {
            String filename = new String("xx.zip".getBytes("UTF-8"), "ISO8859-1");//控制文件名编码
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            ZipOutputStream zos = new ZipOutputStream(bos);
            UrlFilesToZip s = new UrlFilesToZip();
            int idx = 1;
            for (String oneFile : urls) {
                zos.putNextEntry(new ZipEntry("profile" + idx);
                byte[] bytes = s.getImageFromURL(oneFile);
                zos.write(bytes, 0, bytes.length);
                zos.closeEntry();
                idx++;
            }
            zos.close();
            response.setContentType("application/force-download");// 设置强制下载不打开
            response.addHeader("Content-Disposition", "attachment;fileName=" + filename);// 设置文件名
            OutputStream os = response.getOutputStream();
            os.write(bos.toByteArray());
            os.close();
        } catch (FileNotFoundException ex) {
            logger.error("FileNotFoundException", ex);
        } catch (Exception ex) {
            logger.error("Exception", ex);
        }
    }
   }

 注意:1. String filename = new String(“xx.zip”.getBytes(“UTF-8”), “ISO8859-1”);包装zip文件名不发生乱码。 

2.一定要注意,否则会发生下载下来的压缩包无法解压。在给OutputStream 传值之前,一定要先把ZipOutputStream的流给关闭了

 

 

 

 

--------------------- --------------------- --------------------- --------------------- --------------------- 

来源:CSDN 

原文:https://blog.csdn.net/sinat_32849651/article/details/77098161 

 

 

 

 

 

分享到:
评论

相关推荐

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

    JAVA 根据 URL 把多文件打包成 ZIP 下载实例是指通过 JAVA 将多个文件根据 URL 下载并打包成 ZIP 文件的过程。在这个过程中,我们可以使用 JAVA 的 URL 连接和 ZIP 压缩技术来实现文件的下载和打包。 在这个例子中...

    Java多个文件根据URL下载后打包zip导出.zip

    总结来说,"Java多个文件根据URL下载后打包zip导出"涉及的技术主要包括:网络请求、文件I/O、文件打包、HTML交互以及异步处理。理解这些知识点,可以帮助开发者构建一个功能完备的文件下载和打包系统。

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

    Java后台批量下载文件并压缩成zip下载的方法 Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考...

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

    在Java编程中,批量下载和将多个文件打包成ZIP格式是一项常见的需求,特别是在处理大量数据或文件时。这里,我们看到一个示例展示了如何在Java中实现这一功能。首先,让我们详细了解一下涉及到的关键知识点。 1. **...

    多个URL文件下载并打包成zip文件.docx

    本示例提供了一种方法,演示如何根据URL将多文件打包成ZIP并供用户下载。以下是相关知识点的详细说明: 1. **HTTP响应与内容类型设置**: 在`getZip`方法中,首先设置了HTTP响应的`content-type`为`application/...

    Spring Boot中使用Java实现文件批量下载与压缩功能

    为了解决这一问题,我们可以利用Spring Boot结合Java编写一个简单的服务端逻辑,实现将多个文件打包成一个ZIP文件供用户一次性下载。这种方案不仅可以提高用户体验,还能有效减少网络传输次数,提升效率。 #### 二...

    java实现下载打包java实现下载打包

    - 打包文件:如果需要将多个文件打包成一个ZIP或RAR文件,可以使用`java.util.zip`包中的`ZipOutputStream`或`JarOutputStream`。这些类提供了添加文件到压缩包的方法。 2. **HTTP请求**: - 发起GET请求:使用`...

    java 流的方式下载,上传,批量下载zip

    批量下载通常意味着一次请求下载多个文件并将其打包成ZIP。这可以通过服务器端支持的API或者客户端自行合并多个文件后创建ZIP来实现。如果服务器提供了一个ZIP文件,你可以直接使用前面的下载代码来获取。如果需要在...

    导出zip前后端完整方法

    - **Zip格式**:Zip是广泛使用的文件压缩格式,支持多个文件和目录打包。它通过一种称为Deflate的压缩算法来减小文件大小。 2. **后端压缩**: - **Java IO与ZipOutputStream**:在Java中,我们可以利用`java....

    java跨服务器打包下载功能

    这个功能允许用户从不同服务器上聚合多个文件,并将其打包成一个压缩文件供用户下载,大大提高了用户体验。以下是对这个功能的详细解析: 1. **理解基本概念** - **跨服务器**:意味着文件可能存储在不同的网络...

    java -minio.rar

    本教程将深入探讨如何使用Java SDK与MinIO进行交互,包括文件的上传、下载、状态查询、桶管理等基本操作。 一、MinIO简介 MinIO是一款高性能、企业级的对象存储系统,它适用于存储非结构化数据,如图片、文档、视频...

    Java OSS批量下载并压缩为ZIP代码实例

    Java OSS批量下载并压缩为ZIP代码实例是使用Java语言实现在OSS(Object Storage Service)中批量下载文件并将其压缩为ZIP文件的示例代码。下面将对该代码实例中的知识点进行详细解释。 1. Java OSS简介 OSS...

    vue+Java 实现附件分组下载压缩包(csdn)————程序.pdf

    在本文中,我们将探讨如何使用Vue.js前端框架和Java后端服务来实现一个功能,即允许用户按组下载附件并将其打包成一个压缩文件。这个功能对于处理大量相关文件的项目非常有用,例如在文档管理系统或在线协作平台中。...

    Android ZIP文件下载以及解压

    首先,我们需要理解ZIP文件格式,它是一种广泛使用的文件归档格式,可以将多个文件和目录打包成一个单一的压缩文件。 ### 1. ZIP文件格式 ZIP文件包含了一个或多个经过压缩的数据块,每个数据块都包含了文件的元...

    以压缩包的方式下载文件.rar

    在Java编程环境中,有时我们需要将一组文件打包成压缩文件(如RAR或ZIP)供用户下载。这不仅可以减少网络传输的时间,还可以方便用户一次性获取多个文件。以下是对标题和描述中涉及知识点的详细解释: 1. **Java中...

    java浏览器文件打包下载过程解析

    文件打包下载过程是指将多个文件压缩成一个zip文件,并将其下载到客户端的过程。这个过程需要考虑到浏览器的兼容性问题,例如IE浏览器和非IE浏览器的文件名编码问题。 二、Controller层代码 Controller层代码是...

    驱动打包下载.zip

    本压缩包"驱动打包下载.zip"包含了几个主流数据库系统的JDBC驱动,包括Oracle、MySQL、SQL Server和PostgreSQL,这将方便开发者在Java项目中进行数据库操作。 1. **Oracle JDBC驱动 (ojdbc14-10.2.0.3.0.jar)**:...

    批量打包下载pdf文件,多sheet页导出excel

    例如,你可以编写一个脚本,循环遍历一系列PDF URL,每次请求下载一个文件并将其保存到指定目录,最后使用`zipfile`库将所有PDF文件压缩成一个ZIP档案,便于一次性下载和存储。 批量操作的关键在于自动化和脚本化,...

    java jar包 ZIp压缩解压 数据库连接驱动 XML解析

    通过这些类,开发者可以方便地将文件或目录结构打包成ZIP,或者从ZIP文件中提取内容。例如,使用ZipOutputStream,我们可以逐个添加文件到ZIP流,然后将其保存为ZIP文件;使用ZipInputStream,我们可以逐个读取ZIP...

    java增量升级程序.zip

    本"java增量升级程序.zip"文件主要是基于Subversion(SVN)版本控制系统来实现的增量打包。SVN是一个开源的版本控制系统,用于跟踪项目文件的历史变更,便于团队协作和代码管理。在这个过程中,我们首先需要确保本地...

Global site tag (gtag.js) - Google Analytics