文件保留流程
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文档
- 文件保存文档
发表回复