参考文档:https://api.onlyoffice.com/zh/editors/rename
步骤图:
实现步骤:
用户在 文档编辑器中为文档指定一个新名称。
文档编辑器 将文档的新名称通知给 文档管理器。
文档管理器 将文档的新名称发送到 文档存储服务,在这里软件集成商重命名文档。
文档存储服务 将文档的新名称通知给 文档编辑服务。
文档编辑服务 将文档的新名称发送给每个用户的 文档编辑器。
现在新名称对所有用户可见。
注意:默认是没有重命名的菜单的
如果想要启动重命名,必须添加如下配置:
permissions: {rename: true,}
参考文档:https://api.onlyoffice.com/zh/editors/config/events
添加如上配置以后,我们就有了重命名菜单:
点击重命名菜单,会弹出一个对话框,允许我们对文件名做修改:
点击确定,则会触发onRequestRename事件。
接下来参考文档:https://api.onlyoffice.com/zh/editors/command
我们将重命名事件改写如下,然后进行测试:
const key = "Khirz6zTPdfd7"
const onRequestRename = (event) => {let title = event.data;console.log(event)console.log(title)axios({method: "post",url: `http://192.168.234.138:18889/coauthoring/CommandService.ashx`,data: {"c": "meta","key": key,"meta": {"title": title}}}).then(resp => {console.log("onRequestRename", resp)})
};
发生了跨域的错误:
解决跨域的问题,只需要修改vite.config.js,配置代理即可:
import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],server: {proxy: {'/docserver': {target: 'http://192.168.234.138:18889', //目标urlchangeOrigin: true, //支持跨域rewrite: (path) => path.replace(/^\/docserver/, ""),//重写路径,替换/api},'/api': {target: 'http://192.168.234.138:18888', //目标urlchangeOrigin: true, //支持跨域rewrite: (path) => path.replace(/^\/api/, ""),//重写路径,替换/api}}}
})
改写请求方法如下:
const key = "Khirz6zTPdfd7"
const onRequestRename = (event) => {let title = event.data;console.log(event)console.log(title)axios({method: "post",url: `/docserver/coauthoring/CommandService.ashx`,data: {"c": "meta","key": key,"meta": {"title": title},}}).then(resp => {console.log("onRequestRename", resp)})
};
此时报错:
跨域的问题解决了,但是出现了新的错误。
参考官方文档:https://api.onlyoffice.com/zh/editors/command
错误码:
改写请求方法如下:
const key = "Khirz6zTPdfd7"
const onRequestRename = (event) => {let title = event.data;console.log(event)console.log(title)axios({method: "post",url: `/docserver/coauthoring/CommandService.ashx`,data: {"c": "meta","key": key,"meta": {"title": title},token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50IFRpdGxlLmRvY3giLCJ1cmwiOiJodHRwOi8vMTkyLjE2OC4yMzQuMTM4OjE4ODg4L2Rpc3QvdGVzdC5kb2N4In0sImVkaXRvckNvbmZpZyI6eyJjYWxsYmFja1VybCI6Imh0dHA6Ly8xOTIuMTY4LjIzNC4xMzg6MTg4ODgvY2FsbGJhY2siLCJsYW5nIjoiemgtQ04iLCJ1c2VyIjp7ImlkIjoiMSIsIm5hbWUiOiJ6ZHAifSwiY3VzdG9taXphdGlvbiI6eyJmb3JjZXNhdmUiOnRydWV9LCJjb0VkaXRpbmciOnsibW9kZSI6ImZhc3QiLCJjaGFuZ2UiOnRydWV9fSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImhlaWdodCI6IjUwMHB4Iiwid2lkdGgiOiIxMDAlIn0.vnSYKU22-IsBmuoSn5Po-Ukz1RrnM-G3ch3-JuJd1xg",}}).then(resp => {console.log("onRequestRename", resp)})
};
没有令牌的问题解决了,但是出现了没有文件秘钥的问题:
通过查询官方文档,key就是所谓的文档秘钥:
现在的问题是,怎么才能拿到docserver服务中文件真实的秘钥!!!