乐趣区

关于office:onlyoffice教程0x04文件保存

文件保留流程

onlyoffice 对文件保留解决流程如下

  • 用户在文档编辑器中对文档进行编辑
  • 文档编辑器将变动发送到 document server(文档服务器)
  • 当用户敞开文档编辑器 document server 会回调用户配置的 callbackurl 进行告诉
  • 回调程序下载最新的文档保留到文档服务器中

实现

代码

首先,和上一篇一样,本地创立 html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>onlyoffice 教程 </title>
</head>
<body>
<div id="placeholder"></div>
<script type="text/javascript" src="http://47.113.219.133:9001/web-apps/apps/api/documents/api.js"></script>
<script>
    var docEditor = new DocsAPI.DocEditor("placeholder", {
        "document": {
            "fileType": "doc",
            "permissions": {"edit": true,},
            "key": "100000",
            "title": "测试页面.docx",
            "url": "https://zhengjianfeng.cn/document/example.docx",
        },
       "editorConfig":{
            "lang":"zh-CN",
                 "callbackUrl": "http://47.113.219.133:8080/api/office/callback",
            "user":{
                "group":"admin",
                "id":"004",
                "name":"郑剑峰"
            }
        },
        "height": "800px",
        "width": "100%"
    });

</script>
</body>
</html>

callbackUrl 指定回调接口

document server 会在用户编辑文档期间屡次回调接口,会将用户以后编辑状态发送给回调接口,比方当用户打开文档进行编辑时会回调接口,发送以下数据

{
    "key": "100000",
    "status": 1,
    "users": ["004"],
    "actions": [
        {
            "type": 1,
            "userid": "004"
        }
    ]
}

status 示意用户编辑状态,别离有以下几种状态

  • 1 - 文档正在被编辑,个别用户打开文档时的状态,
  • 2 – 文档正要被 document server 保留,用户实现编辑敞开编辑器的状态,
  • 3 – 文档保留失败
  • 4 – 文档内容未扭转
  • 6 – 用户手动点击保留,这个须要额定配置
  • 7 – 用户手动保留失败

个别咱们只需关注 2 和 6 两个状态即可,咱们只关系保留后的文档,这两种状态有什么区别呢,默认状况下,当只有用户敞开文档编辑器后,通过差不多 10s 左右,document server 会将 2 状态回调接口,只所以有 10s 的提早取决于文件的大小和转换的时长,因为 onlyoffice 后盾须要将文档转换为 OPEN XML 格局,有两种解决方案,一种是批改配置文件缩小延迟时间(不倡议这样做),能够编辑配置文件documentserver/default.json

{
    "services": {
        "CoAuthoring": {
            "server": {"savetimeoutdelay": 5000}
        }
    }
}

另外一种是启用强制保留性能,也就是用户点击保留时会立马调用接口,批改编辑器配置,将 forcesave 设置为 true

"editorConfig": {
        "lang": "zh-CN",
        "user": {
            "group": "admin",
            "id": "004",
            "name": "郑剑峰"
        },
        "callbackUrl": "http://47.113.219.133:8080/api/office/callback",
        "customization": {"forcesave": true}
    },

当用户保留时,onlyoffice 会发送 status= 6 的数据,残缺数据如下

{
    "key": "100000",
    "status": 6,
    "url": "http://47.113.219.133:9001/cache/files/100000_5043/output.docx/output.docx?md5=XkF44g2sAkkZVDHCFbJ5Ug&expires=1638441611&filename=output.docx",
    "changesurl": "http://47.113.219.133:9001/cache/files/100000_5043/changes.zip/changes.zip?md5=CGdhAG-sO5AUhM3JsKL_Fg&expires=1638441611&filename=changes.zip",
    "history": {
        "serverVersion": "6.4.2",
        "changes": [
            {
                "created": "2021-12-02 10:23:57",
                "user": {
                    "id": "004",
                    "name": "admin 郑剑峰"
                }
            }
        ]
    },
    "users": ["004"],
    "actions": [
        {
            "type": 2,
            "userid": "004"
        }
    ],
    "lastsave": "2021-12-02T10:24:55.000Z",
    "notmodified": false
}
  • Key:文档主键
  • url:保留后的文档门路
  • changesurl:onlyoffice 会将文档变动内容保留到一个 zip 压缩文件中,如果有须要能够将该文件保存起来,能够 i 通过 editor 相干 api 在界面上显示变动的内容
  • history:文档编辑历史
  • users:编辑用户,因为 onlyoffice 反对协同编辑,所以用户可能是多个

callback handler

onlyoffice 会通过 post 形式回调接口,因而任何反对 post 申请的接口都能够作为回调接口,回调接口须要返回以下信息不然 onlyoffice 会当作解决解决,在界面上显示保留谬误

{"error": 0}

回调函数在后盾须要将最新的文件保留到文件服务器中,不能够只保留文件门路,onlyoffice 不负责文件的存储

参考文档

  • callback 文档
  • 文件保存文档
退出移动版