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