查看: 6689|回复: 8

[Office在线协作] 关于在线协作编辑某些上传的excel文件出现乱码的问题

升级   35.33%

1

主题

6

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-10-21 11:03:12 | 显示全部楼层 |阅读模式
不管是o2oa对接自己部署的onlyoffice,还是下载的o2oa集成onlyoffice的docker,还是o2oa官网的Office在线协作演示系统(http://doc.o2oa.net/x_desktop/document.html?app=CloudDocument),对某些上传的excel文件进行编辑后,过一会再打开(一定要过一会再打开,可能这时后台onlyoffice在进行变更处理,马上打开的话看到的只是服务器缓存的内容)都会发生乱码。会产生乱码的样例excel见附件。另,同样的excel文件上传到新安装的onlyoffice的example中进行编辑,不会出现乱码。由此判断,可能是office在线协作应用的问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

升级   100%

3

主题

1503

回帖

4949

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4949
发表于 2022-10-21 16:59:49 | 显示全部楼层
您好,这边反馈给研发人员看看
回复

使用道具 举报

升级   35.33%

1

主题

6

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-10-21 18:05:18 | 显示全部楼层
非常期待能修正这个问题。
回复

使用道具 举报

升级   35.33%

1

主题

6

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-11-18 12:13:10 | 显示全部楼层
已解决,是类com.x.onlyoffice.assemble.control.jaxrs.onlyoffice.helpers.DocumentManager的downloadToFile方法有bug。该方法对已存在文件的处理,不是先清空原文件的内容,再写入新文件的内容,而是在原文件的基础上,覆盖新文件的内容。当新文件的长度大于等于原文件的长度时,这样处理没有问题。当新文件的长度小于原文件的长度时,最终生成的文件前面部分是新文件的内容,后面部分却是原文件的内容,整个文件是“坏”的,导致前端乱码。
回复

使用道具 举报

升级   35.33%

1

主题

6

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2022-11-18 12:27:31 | 显示全部楼层
将类com.x.onlyoffice.assemble.control.jaxrs.onlyoffice.helpers.DocumentManager的downloadToFile方法的代码段:
                        if (!fileObj.exists()) {
                                fileObj.createFile();
                        } else {
                                if (org.apache.commons.vfs2.FileType.FOLDER.equals(fileObj.getType())) {
                                        throw new IOException("Write fail. File '" + directory + "' exists but is a directory");
                                }
                        }
改为:
                        if (!fileObj.exists()) {
                                fileObj.createFile();
                        } else {
                                if (org.apache.commons.vfs2.FileType.FOLDER.equals(fileObj.getType())) {
                                        throw new IOException("Write fail. File '" + directory + "' exists but is a directory");
                                }
                                fileObj.delete();
                                fileObj.createFile();
                        }
即可。
回复

使用道具 举报

升级   88%

14

主题

16

回帖

464

积分

中级会员

Rank: 3Rank: 3

积分
464
发表于 2023-2-9 13:13:51 | 显示全部楼层
yonh 发表于 2022-11-18 12:27
将类com.x.onlyoffice.assemble.control.jaxrs.onlyoffice.helpers.DocumentManager的downloadToFile方法的 ...

这个类在哪改,需要编译源码??
回复

使用道具 举报

升级   35.33%

1

主题

6

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2023-2-19 21:06:43 | 显示全部楼层
webtk 发表于 2023-2-9 13:13
这个类在哪改,需要编译源码??

要下载源码进行修改。解决了在线协作的n个bug之后--比如无法查看历史版本等--猛然醒悟,人家是故意留的bug,所以,有疑问我都懒得问了,自己默默解决吧。
回复

使用道具 举报

升级   88%

14

主题

16

回帖

464

积分

中级会员

Rank: 3Rank: 3

积分
464
发表于 2023-3-2 09:58:52 | 显示全部楼层
yonh 发表于 2023-2-19 21:06
要下载源码进行修改。解决了在线协作的n个bug之后--比如无法查看历史版本等--猛然醒悟,人家是故意留的bu ...

在线协作没有源码吧!
回复

使用道具 举报

升级   35.33%

1

主题

6

回帖

103

积分

注册会员

Rank: 2

积分
103
发表于 2023-3-9 21:49:15 | 显示全部楼层
DocumentManager.java的源码在这里:\o2server\servers\applicationServer\work\x_onlyoffice_assemble_control\describe\sources\com\x\onlyoffice\assemble\control\jaxrs\onlyoffice\helpers
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表
viewthread