我正在使用 Apache POI 生成带有 .docx 扩展名的文档。我在标头响应(HttpServletResponse)中设置了文件名,但是浏览器在我的 URL 末尾保存了一个同名文件,例如:
我的浏览器中的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
谢谢