我正在使用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