有个业务需要导出WORD,我直接使用WORD将模板文件另存为XML格式的WORD,放在模板目录,使用DefaultDocument操作并输出。
今天在用DefaultDocument操作XML后输servlet流让用户下载的时候,发现大不开,直接以文本方式查看的时候,发现是文件被截断,最后发现的解决方案是,使用BufferedWriter有,文件能完整下载。
关键代码片段
1 2 3 4 5 6 7 8 9 10 11 12 | resp.setContentType("octets/stream"); //转码防止乱码 resp.addHeader("Content-Disposition", "attachment;filename="+new String( fileName.getBytes("gb2312"), "ISO8859-1" )+".doc"); OutputStream outp = resp.getOutputStream(); Document doc = calendarWordService.mainAction(dateHash); OutputStreamWriter out = new OutputStreamWriter(outp,"UTF-8"); BufferedWriter o = new BufferedWriter(out); doc.write(o); o.flush(); o.close(); |
DefaultDocument 输出到servlet输出流中不完整