2012-02-27 39 views
4

我試圖將文件從文件系統流到瀏覽器,無法讓它正常工作。我有一個用的XPage呈現= FALSE和afterRenderResponse我有以下代碼:如何從xPages流文件?

XspHttpServletResponse response = (XspHttpServletResponse) getFacesContext().getExternalContext().getResponse(); 

response.setContentType("application/octet-stream"); 
response.setHeader("Content-Disposition","attachment;filename=demofile.exe"); 

File file = new File("path to file"); 
FileInputStream fileIn = new FileInputStream(file); 
ServletOutputStream out = response.getOutputStream(); 
etc. ..... 

現在,當我嘗試打開的XPage我收到錯誤消息,因爲這在控制檯上:

java.lang.IllegalStateException: Can't get an OutputStream while a Writer is already in use 
     at com.ibm.xsp.webapp.XspHttpServletResponse.getOutputStream(XspHttpServletResponse.java:548) 

該方法'response.getOutputStream()'引發這樣的錯誤,所以我不能讓輸出流工作。有沒有人有這方面的經驗?我只是試圖實現下載服務,所以我可以將文件從服務器文件系統傳回瀏覽器。

回答

6

您可以調用beforeRenderResponse中的facesContext.getOutputStream()而不是來自afterRenderResponse。

,請參閱下面的鏈接以獲得更多幫助:

http://www.wissel.net/blog/d6plinks/SHWL-8BYMW8

http://www.wissel.net/blog/d6plinks/shwl-7mgfbn

+1

beforeRenderResponse事件解決的問題!我下次更仔細閱讀文檔.... – 2012-02-27 18:58:30

+1

請將問題標記爲已回答。 :) – Naveen 2012-02-28 02:33:50

+0

Thx引用我:-) – stwissel 2012-02-28 07:12:15