雄猫 6 . HttpServletResponse如何让浏览器立即做出反应,而不是完成response.getOutputStream().close()?

发布于 2024-11-16 06:03:56 字数 371 浏览 1 评论 0原文

这是我的 servlet 中的代码:

while( bytes....){//do read file to bytes
    response.getOutputStream().write(bytes);
    response.getOutputStream().flush();
    log4j.debug(response.isCommitted());  // out  true.
}

如果我的文件是 100MB ,服务器必须将 100MB 读取到内存,然后浏览器发出警报 下载文件的对话框。 当我的文件大于 2GB 时,浏览器的等待时间是多么可怕......

This is the code in my servlet:

while( bytes....){//do read file to bytes
    response.getOutputStream().write(bytes);
    response.getOutputStream().flush();
    log4j.debug(response.isCommitted());  // out  true.
}

If my file is 100MB , the server must read 100MB to memory and then the browser alerts
a dialog of downloading file.
How the waiting time of the browser terrible, when my file is gt than 2GB ....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

能怎样 2024-11-23 06:03:56

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

坏消息是,尽管 HTTP 规范提供了
文件下载机制(参见 HTTP/1.1,第 19.5.1 节),许多
浏览器事后猜测服务器的指令并按照他们的想法去做
最好的而不是他们被告知的。

好消息是,将下载正确的标头组合
文件足够实用。通过设置这些特殊的标头,
兼容的浏览器将打开“另存为”对话框,而不兼容的浏览器将打开“另存为”对话框
浏览器将打开除 HTML 或图像之外的所有内容的对话框
文件。

Content-Type 标头设置为非标准值,例如
应用程序/x-download

Browser compatibility problems, from Servlet Best Practices, Part 3 by The O'Reilly Java Authors:

The bad news is that although the HTTP specification provides a
mechanism for file downloads (see HTTP/1.1, Section 19.5.1), many
browsers second-guess the server's directives and do what they think
is best rather than what they're told.

The good news is that the right combination of headers will download
files well enough to be practical. With these special headers set, a
compliant browser will open a Save As dialog, while a noncompliant
browser will open the dialog for all content except HTML or image
files.

set the Content-Type header to a nonstandard value such as
application/x-download.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文