我有一个要返回给浏览器的 ZipOutputStream。我想要的体验是用户点击一个 anchor 标签,然后为我有的ZipOutputStream 显示一个文件下载提示。
如何将 ZipOutputStream 返回给浏览器?
最佳答案
昨天不得不做同样的事情。
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(baos);
.... populate ZipOutputStream
String filename = "out.zip";
// the response variable is just a standard HttpServletResponse
response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
response.setContentType("application/zip");
try{
response.getOutputStream().write(baos.toByteArray());
response.flushBuffer();
}
catch (IOException e){
e.printStackTrace();
}
finally{
baos.close();
}
请注意,我使用的是 ByteArrayOutputStream 包装器和 toByteArray,但您可以使用标准 InputStream.read() OutputStream.write() 循环将任何其他类型的 Outputstream 直接写入响应。
手头我实际上不确定哪个更快,但我怀疑我在这里使用 ByteArrayOutputStream 可能不是最注重内存的方法:
关于java - 将 ZipOutputStream 返回给浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5516922/