ZipOutputStream 结合HttpServletResponse 下载ZIP文件
时间: 2023-11-09 15:19:39 浏览: 477
您可以使用`ZipOutputStream`结合`HttpServletResponse`来将多个文件压缩成一个ZIP文件并进行下载。下面是一个示例代码:
```java
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
public class ZipFileDownloader {
public static void downloadFiles(HttpServletResponse response) throws IOException {
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=\"download.zip\"");
ServletOutputStream outputStream = response.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
ZipOutputStream zipOutputStream = new ZipOutputStream(bufferedOutputStream);
// 添加要压缩的文件
// 假设有两个文件:file1.txt 和 file2.txt
byte[] file1Content = "This is file 1 content.".getBytes();
byte[] file2Content = "This is file 2 content.".getBytes();
zipOutputStream.putNextEntry(new ZipEntry("file1.txt"));
zipOutputStream.write(file1Content);
zipOutputStream.closeEntry();
zipOutputStream.putNextEntry(new ZipEntry("file2.txt"));
zipOutputStream.write(file2Content);
zipOutputStream.closeEntry();
zipOutputStream.close();
}
}
```
您可以在适当的地方调用 `downloadFiles` 方法,传入 `HttpServletResponse` 对象,即可触发下载操作。这将生成一个名为 `download.zip` 的ZIP文件,其中包含两个文件:`file1.txt` 和 `file2.txt`。
请注意,以上代码仅演示了如何使用 `ZipOutputStream` 结合 `HttpServletResponse` 进行文件下载,并不包含实际从文件系统中读取文件的过程。您可以根据实际需求进行修改和扩展。
阅读全文