将ZipOutputStream返回给浏览器

ste*_*bot 6 html java zip http

我有一个ZipOutputStream,我想返回到浏览器.我想要的体验是用户单击一个锚标记,然后显示我拥有的ZipOutputStream的文件下载提示.

如何将ZipOutputStream返回到浏览器?

Jbe*_*erg 14

昨天必须做同样的事情.

    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();
    }
Run Code Online (Sandbox Code Playgroud)

注意我正在使用ByteArrayOutputStream包装器和toByteArray但您可能只需使用标准InputStream.read()OutputStream.write()循环将任何其他类型的Outputstream直接写入响应.

我实际上不确定哪个更快,但我怀疑我在这里使用ByteArrayOutputStream可能不是最有记忆意识的方法: