Zip 文件下载为 HTML
Zip file downloading as HTML
我正在使用 Java 网络应用程序使用响应输出流创建一个 zip 文件,并设置响应 headers。
当 Chrome/Edge 来下载文件时,他们将其视为 html 文件而不是 zip。
重命名下载到 .zip 的 .html,然后给出正确的文件,所以我正在正确创建 zip。
如果我将 Edge 设置为提示下载,而不是自动下载文件,那么我可以在下载时将其视为 zip。
IE11 可以正确下载为 zip。
我的代码哪里做错了?
ServletOutputStream servletOutputStream = response.getOutputStream();
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(servletOutputStream));
zos.putNextEntry(new ZipEntry(file.getName()));
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis= new BufferedInputStream(fis);
// Write the contents of the file
int data = 0;
while ((data = bis.read()) != -1)
{
zos.write(data);
}
bis.close();
fis.close();
zos.flush();
zos.closeEntry();
zos.close();
servletOutputStream.close();
response.setContentType("Content-type: text/zip");
response.setHeader("Content-Disposition", "attachment; filename=fileName.zip");
尝试先设置 headers,然后再进行其他操作
我正在使用 Java 网络应用程序使用响应输出流创建一个 zip 文件,并设置响应 headers。
当 Chrome/Edge 来下载文件时,他们将其视为 html 文件而不是 zip。
重命名下载到 .zip 的 .html,然后给出正确的文件,所以我正在正确创建 zip。
如果我将 Edge 设置为提示下载,而不是自动下载文件,那么我可以在下载时将其视为 zip。
IE11 可以正确下载为 zip。
我的代码哪里做错了?
ServletOutputStream servletOutputStream = response.getOutputStream();
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(servletOutputStream));
zos.putNextEntry(new ZipEntry(file.getName()));
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis= new BufferedInputStream(fis);
// Write the contents of the file
int data = 0;
while ((data = bis.read()) != -1)
{
zos.write(data);
}
bis.close();
fis.close();
zos.flush();
zos.closeEntry();
zos.close();
servletOutputStream.close();
response.setContentType("Content-type: text/zip");
response.setHeader("Content-Disposition", "attachment; filename=fileName.zip");
尝试先设置 headers,然后再进行其他操作