编程语言
首页 > 编程语言> > java-如何将zip文件写入httpresponse

java-如何将zip文件写入httpresponse

作者:互联网

我创建了一个zip文件(sample.zip),其中包含一些没有问题的文件.当我打开sample.zip时,它包含预期的文件.

我想将该zip文件放入http响应中.目前,我正在使用以下内容:

        response.setContentType("application/zip");
        response.addHeader("Content-Disposition", "attachment; filename="+"sampleZip.zip");
        response.setContentLength(2048);
        response.setHeader("Set-Cookie", "fileDownload=true; path=/");
        FileInputStream fileInputStream = new FileInputStream("sample.zip");
        OutputStream responseOutputStream = response.getOutputStream();
        int bytes;
        while ((bytes = fileInputStream.read()) != -1) {
            responseOutputStream.write(bytes);
        }
        response.flushBuffer();

现在,它在我的浏览器默认下载位置下载了zip文件.但是当我打开该zip文件时,它显示

Cannot open file: it does not appear to be valid archive

请帮助我解决这个问题.

解决方法:

这段代码对我来说看起来不错.但是您正在设置默认的内容长度,这可能是个问题.创建File实例,并使用file.length()方法设置内容长度,并对输入流使用相同的文件.逐字节读取也不是一个好主意.如果可能,请使用apache的IOUtils.copy()将数据从输入流复制到ServletOutputStream.

标签:zip,http-headers,java,jquery
来源: https://codeday.me/bug/20191123/2064784.html