使用freemarker导出word,将生成的word放置在固定的文件夹,然后通过response将此文件下载下来,但是用office打开下载后的word时,提示最后一行语法错误,用editplus打开后发现最后一行多出{}符号,怎么解决?
response.setCharacterEncoding("utf-8");
//response.setContentType("multipart/form-data");
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(targetHtmlPath, "utf-8"));
FileInputStream is = new FileInputStream(htmlFile);
dis = new DataInputStream(is);
os = response.getOutputStream();
byte[] buffer = new byte[512000];
int readSize = 0;
int i = 0;
String osName = System.getProperty("os.name");
if (Pattern.matches("Linux.*", osName)) {
while ((readSize = dis.read(buffer)) != -1) {
System.out.println(i);
System.out.println("Linux"+readSize);
os.write(buffer, 0, readSize);
i++;
}
} else {
while ((readSize = dis.read(buffer)) != -1) {
System.out.println(i);
System.out.println("windows"+readSize);
os.write(buffer, 0, readSize);
i++;
}
}
editplus 打开后的word,多了一个{}如图:

感觉{}是你的web服务器写入流写多的东西,比如说你的jsp页面上有没有{}
或者你代码里返回了什么多余的字符
FileInputStream is = new FileInputStream(htmlFile);
这里下断点,看你htmlFile里面有没有这多余的字符