Java Tomcat下载压缩的jar文件不起作用

Java Tomcat下载压缩的jar文件不起作用,java,tomcat,jar,download,zip,Java,Tomcat,Jar,Download,Zip,我编写了一个用于下载文件的Tomcat Servlet。 代码如下: String fileName = request.getParameter("file"); File file = new File(System.getenv("CATALINA_HOME") + File.separator + fileName); response.setStatus(HttpServletResponse.SC_OK); response.setContentType("application/

我编写了一个用于下载文件的Tomcat Servlet。 代码如下:

String fileName = request.getParameter("file");
File file = new File(System.getenv("CATALINA_HOME") + File.separator + fileName);

response.setStatus(HttpServletResponse.SC_OK);
response.setContentType("application/octet-stream");
response.setContentLength((int) file.length());
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

long start = System.currentTimeMillis();

OutputStream out = response.getOutputStream();
long written = FileUtils.copyFile(file, out);
out.flush();

long end = System.currentTimeMillis();
System.out.println(written + " bytes written in " + (end - start) + "ms");
我使用Firefox下载了一个文件(localhost:8080/download?file=test.txt)。 几乎在所有情况下,broser都会立即显示下载对话框,服务器控制台显示“4342132字节,以118ms写入”

但是,每当我想下载一个包含.jar文件的.zip文件时,浏览器显示下载对话框需要20秒的时间。有时,下载被中止。但服务器日志显示“4883055字节以129ms写入”

当我使用没有.jar文件的.zip文件时,一切正常。这怎么可能呢


这不是Firefox特有的问题。问题出现在任何浏览器(FF、Chrome、Opera等)中。

将文件存储在Tomcat的主目录中不是一个好主意;你的webapp应该有自己的工作目录,在webapp目录之外。另外,使用JSR203而不是
文件
:这是2015年。@fge它只是为了测试。不是为了生产。