參考文檔: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服務中文件真實的秘鑰!!!