【发布时间】:2014-04-11 04:39:38
【问题描述】:
我有一个网络应用程序,允许用户选择图像然后下载它们。对于单个图像,我使用 HTML5 的锚点下载,效果很好。现在我需要允许他们选择多个图像,并将它们下载为 .zip 文件。我正在使用 api 将每个图像作为 InputStream 并返回 Jersey 响应。
我是 zip 的新手,我对 InputStream 的 zip 应该如何工作感到有些困惑。
对于单张图片,它的工作原理如下:
try {
InputStream imageInputStream = ImageStore.getImage(imageId);
if (imageInputStream == null) {
XLog.warnf("Unable to find image [%s].", imageId);
return Response.status(HttpURLConnection.HTTP_GONE).build();
}
Response.ResponseBuilder response = Response.ok(imageInputStream);
response.header("Content-Type", imageType.mimeType());
response.header("Content-Disposition", "filename=image.jpg");
return response.build();
}
这并不多,但这是我目前拥有的用于多张图片
的javapublic Response zipAndDownload(List<UUID> imageIds) {
try {
// TODO: instantiate zip file?
for (UUID imageId : imageIds) {
InputStream imageInputStream = ImageStore.getImage(imageId);
// TODO: add image to zip file (ZipEntry?)
}
// TODO: return zip file
}
...
}
我就是不知道如何处理多个InputStreams,而且我似乎不应该有多个,对吧?
【问题讨论】:
标签: java zip inputstream