我正在使用Apache POI生成带.docx扩展名的文档。我在标题响应(HttpServletResponse)中设置了文件名,但浏览器在我的URL末尾保存了一个同名的文件,例如:Apache POI + RichFaces 4 - docx文件名
我的浏览器中的URL是:localhost:8080/MyProject/mypage.jsf ,下载文件的名称是mypage.jsf,忽略头中设置的名称(HttpServletResponse)。如果我编辑docx的文件扩展名,内容是确定的。
下面的代码:
private void generateDocument() throws IOException{
XWPFDocument document = new XWPFDocument();
//load document here
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext
.getExternalContext().getResponse();
response.reset();
response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
ServletOutputStream out = response.getOutputStream();
document.write(out);
response.setHeader("Content-Disposition",
"attachment; filename=my_document.docx");
facesContext.responseComplete();
}
诗篇。我使用RichFaces的4
感谢
你尝试移动response.setHeader调用你写的servlet输出流之前?我不知道你的servlet设置,但是在写内容之前大多数所有头文件都需要去掉 – Gagravarr 2012-07-26 20:09:56
另外,不要忘记在设置响应完成之前刷新输出流并关闭它。 – 2012-07-26 20:45:06
@Gagravarr,它的工作! Luiggi门多萨,真的很有必要。谢谢大家。 – vctlzac 2012-07-27 00:02:05