java - 将 ZipOutputStream 返回给浏览器

标签 java html http zip

我有一个要返回给浏览器的 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/

相关文章:

java - 字符串已定义但未解析?

javascript - 如何去掉html开头和结尾的&nbsp?

html - 将父 div 的高度加上 "same level"div 调整为嵌套 div 之一的高度

c# - IE 添加 http header PRAGMA : no-cache

Java socket.io 客户端

java - 页面可通过 Firefox 中的透明代理访问,但不能通过 java post 请求访问

java - 在 WebView DialogFragment 中触摸时不显示软键盘

javascript - DIV的onclick中的alert()点击后不显示

java - 如何解决 SSLHandshake 异常?

javascript - 将数据从表更新到数据库?