Files
leaudit-platform-backend/docs/Collabora/参考资料/Collabora请求流程.md
T

53 lines
1.7 KiB
Markdown

`1️⃣ 前端请求流程
用户点击预览
CollaboraViewer.tsx (组件)
fetch('/api/collabora/view?fileId=xxx&mode=view&userId=xxx&userName=xxx')
后端 API: app/api/collabora/view/route.ts
返回配置 { iframeUrl, accessToken, wopiSrc, ... }
前端渲染
2️⃣ Collabora 加载文档流程
浏览器加载 iframe
Collabora 服务器 ([http://172.16.0.81:9980](http://172.16.0.81:9980))
Collabora 解析 URL 中的 WOPISrc 和 access_token
Collabora 调用: GET {WOPISrc}?access_token=xxx
实际: GET [http://172.16.0.78:3000/api/collabora/wopi/files/contracts/xxx.docx?access_token=xxx](http://172.16.0.78:3000/api/collabora/wopi/files/contracts/xxx.docx?access_token=xxx)
后端 WOPI 端点: app/api/collabora/wopi/files/[...fileId]/route.ts
- 验证 JWT token
- 返回 CheckFileInfo (文件元数据)
Collabora 再次调用: GET {WOPISrc}/contents?access_token=xxx
后端 WOPI 端点检测到 /contents 后缀
- 从 MinIO 读取文件内容
- 返回文件二进制数据
Collabora 在 iframe 中渲染文档
3️⃣ 保存文档流程(编辑模式)
用户编辑文档 → 点击保存/关闭
Collabora 调用: POST {WOPISrc}/contents?access_token=xxx
请求体: 编辑后的文档二进制数据
后端 WOPI 端点 POST 处理器
- 验证 token 和权限
- 将文档保存到 MinIO(覆盖原文件)
返回 200 OK
Collabora 显示保存成功