public static void writeZip(final HttpServletResponse response, final List<File> files, String fileName) throws IOException {
response.reset();
response.setContentType("text/comma-separated-values;charset=gbk");
response.setCharacterEncoding("GBK");
fileName = FileUtil.toUtf8String(fileName);
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
final OutputStream os = response.getOutputStream();
final ZipOutputStream zos = new ZipOutputStream(os);
zos.setEncoding("gbk");// 指定编码为gbk,否则部署到linux下会出现乱码
final byte[] buf = new byte[1024];
int len;
for (final File file : files) {
if (!file.isFile()) {
continue;
}
final ZipEntry ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
while ((len = bis.read(buf)) > 0) {
zos.write(buf, 0, len);
}
zos.closeEntry();
}
zos.close();
}
response.reset();
response.setContentType("text/comma-separated-values;charset=gbk");
response.setCharacterEncoding("GBK");
fileName = FileUtil.toUtf8String(fileName);
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
final OutputStream os = response.getOutputStream();
final ZipOutputStream zos = new ZipOutputStream(os);
zos.setEncoding("gbk");// 指定编码为gbk,否则部署到linux下会出现乱码
final byte[] buf = new byte[1024];
int len;
for (final File file : files) {
if (!file.isFile()) {
continue;
}
final ZipEntry ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
final BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
while ((len = bis.read(buf)) > 0) {
zos.write(buf, 0, len);
}
zos.closeEntry();
}
zos.close();
}
本文介绍了一种通过Java实现的批量文件压缩并下载的方法。该方法利用HttpServletResponse将多个文件打包成ZIP格式,并通过浏览器提供下载。具体步骤包括设置响应头、创建ZIP输出流、读取文件并写入ZIP输出流等。
1116

被折叠的 条评论
为什么被折叠?



