当前位置: 首页 > news >正文

zdppy+onlyoffice+vue3解决文档加载和文档强制保存时弹出警告的问题

解决过程

第一次排查

最开始排查的是官方文档说的 https://api.onlyoffice.com/editors/troubleshooting#key 解决方案。参考的是官方的 https://github.com/ONLYOFFICE/document-server-integration/releases/latest/download/Python.Example.zip 基于Django的Python代码。

Python代码如下:
在这里插入图片描述

这次排查,确保我们的回调地址是能用的,返回的也是 {“error”: 0},但是没用!!!

第二次排查

找到了一个 SpringBoot的项目,参考了如下代码:
在这里插入图片描述

通过上面的代码我们发现,它的返回的类型不是JSON类型,而我们原本的返回类型是JSON类型,所以做了一个尝试,将我们的返回类型改成了纯文本类型。

    data = {"error": 0}# return JSONResponse('{"error":0}')# return JSONResponse(json.dumps(data))return PlainTextResponse(json.dumps(data))

经过实测,问题就出在这里。
必须要返回纯文本类型!!!!

最终代码

后端

import json
import reqimport api
from api import middleware, PlainTextResponse
from api.zjson.response import JSONResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback === ", data)# status == 2 文档准备好被保存if data.get("status") == 2:req.download(data.get("url"), "data/test.docx")if data.get("status") == 6:req.download(data.get("url"), "data/test.docx")# status == 6 文档编辑会话关闭data = {"error": 0}# return JSONResponse('{"error":0}')# return JSONResponse(json.dumps(data))return PlainTextResponse(json.dumps(data))app = api.Api(routes=[api.resp.dir_route("/dist", "data"),api.resp.post("/callback", doc_callback),],middleware=[middleware.cors()],
)if __name__ == "__main__":app.run(port=18888)

前端

<script setup>
import {message} from "ant-design-vue";const onLoadDocumentClick = () => {message.success("load document")// isDocument.value = trueconst docEditor = new DocsAPI.DocEditor("doc", {"document": {"fileType": "docx","key": `Khirz6zTPdfd7`,"title": "Example Document Title.docx","url": "http://192.168.234.138:18888/dist/test.docx"},"editorConfig": {"callbackUrl": "http://192.168.234.138:18888/callback","lang": "zh-CN","user": {"id": "1","name": "zdp"},"customization": {"forcesave": true,},"coEditing": {"mode": "fast","change": true},},"documentType": "word",height: '500px',width: '100%',token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkb2N1bWVudCI6eyJmaWxlVHlwZSI6ImRvY3giLCJrZXkiOiJLaGlyejZ6VFBkZmQ3IiwidGl0bGUiOiJFeGFtcGxlIERvY3VtZW50IFRpdGxlLmRvY3giLCJ1cmwiOiJodHRwOi8vMTkyLjE2OC4yMzQuMTM4OjE4ODg4L2Rpc3QvdGVzdC5kb2N4In0sImVkaXRvckNvbmZpZyI6eyJjYWxsYmFja1VybCI6Imh0dHA6Ly8xOTIuMTY4LjIzNC4xMzg6MTg4ODgvY2FsbGJhY2siLCJsYW5nIjoiemgtQ04iLCJ1c2VyIjp7ImlkIjoiMSIsIm5hbWUiOiJ6ZHAifSwiY3VzdG9taXphdGlvbiI6eyJmb3JjZXNhdmUiOnRydWV9LCJjb0VkaXRpbmciOnsibW9kZSI6ImZhc3QiLCJjaGFuZ2UiOnRydWV9fSwiZG9jdW1lbnRUeXBlIjoid29yZCIsImhlaWdodCI6IjUwMHB4Iiwid2lkdGgiOiIxMDAlIn0.vnSYKU22-IsBmuoSn5Po-Ukz1RrnM-G3ch3-JuJd1xg",});}
</script>
<template><div class="bg-indigo-50 p-8 min-h-screen"><div class="bg-amber-200 p-8"><a-button type="primary" @click="onLoadDocumentClick">Load Document</a-button></div><div class="bg-amber-400 p-8 min-h-96"><div id="doc">doc</div></div></div>
</template>
http://www.lryc.cn/news/395308.html

相关文章:

  • C语言从头学31——与字符串变量相关的几个函数
  • Laravel批量插入数据:提升数据库操作效率的秘诀
  • OpenCV:解锁计算机视觉的魔法钥匙
  • 手写简单模拟mvc
  • 【FreeRTOS】同步互斥与通信 FreeRTOS提供的方法
  • Kafka 面试题指南
  • 2024年7月5日 (周五) 叶子游戏新闻
  • 热门开源项目推荐:探索开源世界的精彩
  • Codeforces Round #956 (Div. 2) and ByteRace 2024(A~D题解)
  • 基于YOLOv9的脑肿瘤区域检测
  • 阿里云 ECS 服务器的安全组设置
  • 昇思25天学习打卡营第15天|应用实践之ShuffleNet图像分类
  • 怀庄之醉适合搭配什么食物?
  • Java | Leetcode Java题解之第223题矩形面积
  • 基于单片机的空调控制器的设计
  • 企业如何利用短视频平台做口碑塑造和品牌营销?
  • SQL INSERT批量插入方式
  • 2.5 C#视觉程序开发实例1----IO_Manager实现切换程序
  • 【入门篇】STM32寻址范围(更新中)
  • DDD架构
  • Open3D KDtree的建立与使用
  • C语言编程3:运算符,运算符的基本用法
  • 如何通过SPI机制去实现读取配置文件并动态加载对应实现类
  • 双链表(数组模拟)
  • ChatGPT 5.0:一年半后的展望与看法
  • 城市地下综合管廊物联网远程监控
  • VS 附加进程调试
  • 核函数的深入理解
  • 使用Ckman部署ClickHouse集群介绍
  • 「前端工具」postman接口测试工具详解