使用freemarker工具导出word,windows中没问题,Linux中下载后发现word打不开,最后一行多了{}符号,怎么处理。 40C

使用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,多了一个{}如图:
![图片说明](https://img-ask.csdn.net/upload/201910/28/1572263895_556297.png)

1个回答

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

qq_34696943
qq_34696943 在windows+tomcat下和Linux+Tomcat下是没有问题的,现在是weblogic+linux 下存在问题
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问