压缩文件代码工具类:
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导出"涉及的技术主要包括:网络请求、文件I/O、文件打包、HTML交互以及异步处理。理解这些知识点,可以帮助开发者构建一个功能完备的文件下载和打包系统。
Java后台批量下载文件并压缩成zip下载的方法 Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考...
在Java编程中,批量下载和将多个文件打包成ZIP格式是一项常见的需求,特别是在处理大量数据或文件时。这里,我们看到一个示例展示了如何在Java中实现这一功能。首先,让我们详细了解一下涉及到的关键知识点。 1. **...
本示例提供了一种方法,演示如何根据URL将多文件打包成ZIP并供用户下载。以下是相关知识点的详细说明: 1. **HTTP响应与内容类型设置**: 在`getZip`方法中,首先设置了HTTP响应的`content-type`为`application/...
为了解决这一问题,我们可以利用Spring Boot结合Java编写一个简单的服务端逻辑,实现将多个文件打包成一个ZIP文件供用户一次性下载。这种方案不仅可以提高用户体验,还能有效减少网络传输次数,提升效率。 #### 二...
- 打包文件:如果需要将多个文件打包成一个ZIP或RAR文件,可以使用`java.util.zip`包中的`ZipOutputStream`或`JarOutputStream`。这些类提供了添加文件到压缩包的方法。 2. **HTTP请求**: - 发起GET请求:使用`...
批量下载通常意味着一次请求下载多个文件并将其打包成ZIP。这可以通过服务器端支持的API或者客户端自行合并多个文件后创建ZIP来实现。如果服务器提供了一个ZIP文件,你可以直接使用前面的下载代码来获取。如果需要在...
- **Zip格式**:Zip是广泛使用的文件压缩格式,支持多个文件和目录打包。它通过一种称为Deflate的压缩算法来减小文件大小。 2. **后端压缩**: - **Java IO与ZipOutputStream**:在Java中,我们可以利用`java....
这个功能允许用户从不同服务器上聚合多个文件,并将其打包成一个压缩文件供用户下载,大大提高了用户体验。以下是对这个功能的详细解析: 1. **理解基本概念** - **跨服务器**:意味着文件可能存储在不同的网络...
本教程将深入探讨如何使用Java SDK与MinIO进行交互,包括文件的上传、下载、状态查询、桶管理等基本操作。 一、MinIO简介 MinIO是一款高性能、企业级的对象存储系统,它适用于存储非结构化数据,如图片、文档、视频...
Java OSS批量下载并压缩为ZIP代码实例是使用Java语言实现在OSS(Object Storage Service)中批量下载文件并将其压缩为ZIP文件的示例代码。下面将对该代码实例中的知识点进行详细解释。 1. Java OSS简介 OSS...
在本文中,我们将探讨如何使用Vue.js前端框架和Java后端服务来实现一个功能,即允许用户按组下载附件并将其打包成一个压缩文件。这个功能对于处理大量相关文件的项目非常有用,例如在文档管理系统或在线协作平台中。...
首先,我们需要理解ZIP文件格式,它是一种广泛使用的文件归档格式,可以将多个文件和目录打包成一个单一的压缩文件。 ### 1. ZIP文件格式 ZIP文件包含了一个或多个经过压缩的数据块,每个数据块都包含了文件的元...
在Java编程环境中,有时我们需要将一组文件打包成压缩文件(如RAR或ZIP)供用户下载。这不仅可以减少网络传输的时间,还可以方便用户一次性获取多个文件。以下是对标题和描述中涉及知识点的详细解释: 1. **Java中...
文件打包下载过程是指将多个文件压缩成一个zip文件,并将其下载到客户端的过程。这个过程需要考虑到浏览器的兼容性问题,例如IE浏览器和非IE浏览器的文件名编码问题。 二、Controller层代码 Controller层代码是...
本压缩包"驱动打包下载.zip"包含了几个主流数据库系统的JDBC驱动,包括Oracle、MySQL、SQL Server和PostgreSQL,这将方便开发者在Java项目中进行数据库操作。 1. **Oracle JDBC驱动 (ojdbc14-10.2.0.3.0.jar)**:...
例如,你可以编写一个脚本,循环遍历一系列PDF URL,每次请求下载一个文件并将其保存到指定目录,最后使用`zipfile`库将所有PDF文件压缩成一个ZIP档案,便于一次性下载和存储。 批量操作的关键在于自动化和脚本化,...
通过这些类,开发者可以方便地将文件或目录结构打包成ZIP,或者从ZIP文件中提取内容。例如,使用ZipOutputStream,我们可以逐个添加文件到ZIP流,然后将其保存为ZIP文件;使用ZipInputStream,我们可以逐个读取ZIP...
本"java增量升级程序.zip"文件主要是基于Subversion(SVN)版本控制系统来实现的增量打包。SVN是一个开源的版本控制系统,用于跟踪项目文件的历史变更,便于团队协作和代码管理。在这个过程中,我们首先需要确保本地...