簡體   English   中英

當我從servlet向瀏覽器發送文件時,輸出流會發生什么?

[英]What happens to the output stream when I'm sending a file from a servlet to a browser?

我有一個應用程序,用戶可使用該應用程序下載一些不幸通過Web服務檢索的文件.Web服務在有效載荷內提供文件內容:(

因此,我可能同時在webapp的內存中有很多文檔,導致內存不足。

問題是:當用戶按下webage下載時,我開始在outputstream上寫...但是用戶收到帶有“保存”或“取消”的彈出窗口。 在按保存之前,文檔將如何處理? 如果按取消鍵怎么辦?

輸出流在寫入時被阻止,直到用戶按Save?

謝謝...

不,輸出流沒有鎖定,而是在您的servlet容器認為合適的時候(或者在您強制使用flush()調用發送時)將其緩沖並發送到客戶端。

根據您的服務器基礎結構(如果您的Web服務器前面是否有反向代理),您的請求可能會失敗還是不會失敗,但是通常您不必擔心。

關於內存問題,您可能應該調用Web並從其讀取時直接將其寫入請求輸出流,或者應該將此文件寫入文件,然后將此文件分塊寫入響應中,以避免使用過多的內存並由於內存不足錯誤而導致服務器停機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM