2012-02-27 69 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