2011-06-21 30 views
0

這是我的servlet代碼:tomcat 6。 HttpServletResponse如何讓瀏覽器立即做出反應,而不是做了response.getOutputStream()。close()?

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

如果我的文件爲100MB,服務器必須讀取100MB內存,然後在瀏覽器提醒 下載文件的對話框。 瀏覽器如何可怕,當我的文件GT大於2GB的等待時間....

回答

1

瀏覽器兼容性問題,從Servlet最佳實踐,第3部分由O'Reilly的Java的作者:

壞消息是儘管HTTP規範提供了一種用於文件下載的 機制(請參閱HTTP/1.1,第19.5.1節),但很多瀏覽器都會猜測服務器的指示並做他們認爲 最好的選擇,重新告訴。

好消息是,正確的標題組合將下載 文件,足以實用。通過設置這些特殊標頭,兼容的瀏覽器將打開另存爲對話框,而不兼容的瀏覽器將打開除HTML或圖像 文件之外的所有內容的對話框。

Content-Type標頭設置爲非標準值,如 application/x-download

相關問題