qq_34696943 2019-10-28 19:58 采纳率: 20%
浏览 498
已结题

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

使用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条回答 默认 最新

  • threenewbee 2019-10-28 21:14
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!