当我将文件从servlet发送到浏览器时,输出流会发生什么?

时间:2011-07-28 18:26:14

标签: java servlets download

我有一个应用程序,供用户用来下载一些不幸通过webservice重新检索的文件.web服务提供有效负载内文件的内容:(

因此,我可能会在webapp内存中同时存在大量文档,导致内存不足。

问题是:当用户按下webage下载时,我开始在输出流上写...但是用户会收到一个“保存”或“取消”的弹出窗口。 在按下保存之前,文档会发生什么? 如果他按下取消怎么办?

输出流在写入时被阻止,直到用户按下保存?

...谢谢

1 个答案:

答案 0 :(得分:1)

不,输出流没有被锁定,它被缓冲并且当你的servlet容器认为是正确的时候(或当你强制发送flush()调用时)它被发送到客户端。

根据您的服务器基础结构(如果您的Web服务器前面有或没有反向代理),您的请求可能会失败或失败,但通常您不必关心它。

关于内存问题,您可能应该调用Web并在读取时直接写入请求输出流,或者您应该将其写入文件,然后将此文件以块的形式写入响应以避免使用由于内存不足错误导致内存过多而导致服务器停机。