我正在尝试编写一个 servlet 以将文件下载为 zip,它将读取存储库 (CRX) 中的多个节点以获取多个图像的 Inputstream。
我正在使用 ZipOutputStream 下载 zip 文件。但由于不知道压缩后的长度,我无法设置 content-length 标头作为响应,因此浏览器无法显示剩余下载时间。
当前代码:
String[] paths = request.getRequestParameters("path");
ZipOutputStream out = new ZipOutputStream(response.getOutputStream());
for (int i=0; i<paths.length;i++){
InputStream is = getStream(paths[i]);
IOUtils.copy(is, out);
IOUtils.closeQuietly(is);
out.closeEntry();
}
有没有办法生成 ZipFile 然后写入输出流?