我有一个应用程序,用户使用它来下载一些文件,不幸的是,这些文件是通过网络服务检索的。网络服务提供有效负载内的文件内容:(
所以我可能在 webapp 的内存中同时有很多文档,从而导致内存不足。
问题是:当用户按下网页下载时,我开始在输出流上写入...但是用户收到一个带有“保存”或“取消”的弹出窗口。 在他按下“保存”之前,文档会发生什么情况? 如果他按取消怎么办?
输出流在写入时被阻止,直到用户按下“保存”?
谢谢...
最佳答案
不,输出流没有被锁定,它被缓冲,并且当您的 servlet 容器认为时间正确时(或者当您通过对其进行刷新()调用强制发送时),它会被发送到客户端。
根据您的服务器基础设施(如果您的网络服务器前面是否有反向代理),您的请求可能会失败,但通常您不必关心这一点。
关于内存问题,您可能应该调用网络并在读取时直接写入请求输出流,或者您应该将其写入文件,然后将此文件分块写入响应,以避免使用过多内存并由于内存不足错误而导致服务器停机。
关于java - 当我将文件从 servlet 发送到浏览器时,输出流会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863820/