File io tomcat 6。HttpServletResponse如何使浏览器立即做出响应,而不是执行响应。getOutputStream().close()??

File io tomcat 6。HttpServletResponse如何使浏览器立即做出响应,而不是执行响应。getOutputStream().close()??,file-io,browser,tomcat6,servlets,File Io,Browser,Tomcat6,Servlets,以下是我的servlet中的代码: while(字节…){//将文件读取到字节 response.getOutputStream().write(字节); response.getOutputStream().flush(); log4j.debug(response.isCommitted());//输出为true。 } 如果我的文件是100MB,服务器必须将100MB读取到内存,然后浏览器发出警报 下载文件的对话框。 当我的文件大于2GB时,浏览器的等待时间有多糟糕……浏览器兼容性问题,来

以下是我的servlet中的代码:

while(字节…){//将文件读取到字节
response.getOutputStream().write(字节);
response.getOutputStream().flush();
log4j.debug(response.isCommitted());//输出为true。
}
如果我的文件是100MB,服务器必须将100MB读取到内存,然后浏览器发出警报 下载文件的对话框。
当我的文件大于2GB时,浏览器的等待时间有多糟糕……

浏览器兼容性问题,来自Servlet最佳实践,O'Reilly Java作者的第3部分:

坏消息是,尽管HTTP规范提供了 文件下载机制(见HTTP/1.1,第19.5.1节),很多 浏览器猜测服务器的指令,然后按他们的想法去做 是最好的,而不是别人告诉他们的

好消息是将下载正确的标题组合 文件足够好,可以实用。设置了这些特殊的标题后 兼容浏览器将打开另存为对话框,而非兼容浏览器将打开另存为对话框 浏览器将打开除HTML或图像以外的所有内容的对话框 档案

内容类型
标题设置为非标准值,例如
应用程序/x-下载