我正在尝试将文件从文件系统流式传输到浏览器,但无法使其正常工作。我有一个带有rendering = false的xpage,在afterRenderResponse上我有以下代码:
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()'引发了这样的错误,所以我不能让输出流工作。有没有人有这方面的经验?我只是尝试实现下载服务,以便将文件从服务器文件系统流回浏览器。
答案 0 :(得分:6)
您可以在beforeRenderResponse中调用facesContext.getOutputStream(),而不是在afterRenderResponse中调用。
请参阅以下链接以获取更多帮助: