Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将ZipoutStream返回到浏览器_Java_Html_Http_Zip - Fatal编程技术网

Java 将ZipoutStream返回到浏览器

Java 将ZipoutStream返回到浏览器,java,html,http,zip,Java,Html,Http,Zip,我有一个ZipoutStream要返回到浏览器。我想要的体验是,用户单击一个锚标记,然后为我拥有的ZipOutputStream显示一个文件下载提示 如何将ZipOutputStream返回到浏览器?昨天也做了同样的事情 ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(baos); .... populate ZipOu

我有一个ZipoutStream要返回到浏览器。我想要的体验是,用户单击一个锚标记,然后为我拥有的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可能不是最注重记忆的方法: