实战应用WPS WebOffice开放平台服务

概述

根据公司的业务需要,主要功能是在线编辑文档,前端的小伙伴进行的技术调研,接入的是WPS WebOffice,这里只阐述技术介入的步骤、流程和遇到的坑进行的一些总结。

实践

WPS WebOffice 开放平台进行认证

在开始之前,需要在WPS WebOffice 开放平台进行注册和认证,添加应用,申请成功后如下图所示:

在这里插入图片描述

开发和接入

在开始编写代码之前,有三个关键概念要提前了解 webClient(前端客户端)、 WpsServers(Wps服务)、CrmServers(服务端),请求流程: 前端客户端请求Wps服务,Wps服务请求服务端,进行通知、回调操作。

具体实现,图中左侧是我们具体业务逻辑,右侧是Wps服务请求我们的服务端:

在这里插入图片描述

1.配置路由:WPS WebOffice

开放平台url都是官方定义好的,用路径拼接好的,服务端需要定义一个全局${file_id}来进行通信,强烈推荐在服务端配置自定义路由,这样的实现简单便捷,也可以在Nginx使用重定向进行解决,参数通过截取Url得到。

/** wps 在线文档自定义路由 */
$route['v3/3rd/files/(:any)'] = 'wps/test/files/$1/$2/$3';
$route['v3/3rd/users'] = 'wps/test/users';
$route['v3/3rd/notify'] = 'wps/test/notify';

2.预览

在前端预览的时候,Wps服务文件信息、文件权限、文件下载地址、用户信息4个接口,返回格式要和文档上的一致,不然会产生权限不足的错误,查找起来也是很困难,在这里也说一下接口说明:

120.92.55.139 - - [24/Oct/2024:07:23:57 +0800] "GET /v3/3rd/users?user_ids=45 HTTP/1.1" 200 89 "-" "Go-http-client/1.1"
120.92.55.139 - - [24/Oct/2024:07:23:57 +0800] "GET /v3/3rd/files/HT4319/permission HTTP/1.1" 200 131 "-" "Go-http-client/1.1"
120.92.55.139 - - [24/Oct/2024:07:24:08 +0800] "GET /v3/3rd/files/HT4319 HTTP/1.1" 200 177 "-" "Go-http-client/1.1"
120.92.55.139 - - [24/Oct/2024:07:24:08 +0800] "GET /v3/3rd/files/HT4319/download HTTP/1.1" 200 137 "-" "Go-http-client/1.1"
  • /v3/3rd/users :获取用户信息接口,用于在线文件操作中的显示和记录。
  • /v3/3rd/files/HT4319/permission : 获取当前文件可以操作的权限
  • /v3/3rd/files/HT4319 :获取文件的基本信息、创建文件用户、大小等等
  • /v3/3rd/files/HT4319/download:最容易出错的是这个接口,这个接口中要返回的是文档可以下载的url路径,Wps服务要来这里获取文件数据流。

3.保存

在操作的过程中,每保存一次文件,他就会请求URL一次,我们使用的这个版本用的是三阶段提交,具体阐述如下:

120.92.55.139 - - [24/Oct/2024:07:37:56 +0800] "GET /v3/3rd/files/HT4319/upload/prepare HTTP/1.1" 200 86 "-" "Go-http-client/1.1"
120.92.55.139 - - [24/Oct/2024:07:37:56 +0800] "POST /v3/3rd/files/HT4319/upload/address HTTP/1.1" 200 186 "-" "Go-http-client/1.1"
120.92.55.139 - - [24/Oct/2024:07:37:56 +0800] "GET /v3/3rd/files/HT4319/permission HTTP/1.1" 200 131 "-" "Go-http-client/1.1"
120.92.55.139 - - [24/Oct/2024:07:37:56 +0800] "POST /v3/3rd/files/HT4319/upload/complete HTTP/1.1" 200 179 "-" "Go-http-client/1.1"
  • /v3/3rd/files/HT4319/upload/prepare : 这个接口的作用是Wps服务与本地服务端协商摘要算法,有 md5 sha1 sha256三个选项,多接口的交互需要保持一致。
  • /v3/3rd/files/HT4319/upload/address : 这个接口的作用是在编辑的过程中,告诉Wps服务保存文件的Api,Wps服务以文件流的形式来进行请求
  • /v3/3rd/files/HT4319/upload/complete:Wps服务保存完成后,回调这个接口

以我的/v3/3rd/files/HT4319/upload/address接口为例,返回的完整Json结构,作用是在文件在线编辑的过程中去同步请求url的指定接口。

{"code": 0,"data": {"method": "PUT","url": "https://www.stark.com/api/laborcontract_wps/save_wps","params": {"file_id": "HT4308","name": ""}},"message": ""
}

有两个注意的点,开发过程中,最大的难点就在这里了。
1、save_wps接收的参数是通过upload/address params 传递的,我的$this->posts是参数数组
2、接收到的文件流,重写到指定地址,覆盖之前的文件地址 $savePath

public function save_wps()
{#接收参数$file_id = isset($this->posts['file_id']) ? $this->posts['file_id'] : '';//接收文件流,覆盖文件$stream = file_get_contents('php://input');file_put_contents($savePath, $con);
}

4.其他

文档重命名、水印、用户列表、会话通知其他接口就比较简单,不在这里一一赘述了,如果有需要的可以私信我,给我留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458968.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据-193 Apache Tez - DAG 作业计算框架 核心解释 工作原理 配置集成

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Anki插件Export deck to html的改造

在Anki中进行复习时,每次只能打开一条笔记。如果积累了很多笔记,有时候会有将它们集中输出成一个pdf进行阅读的想法。Anki插件Export deck to html(安装ID:1897277426)就有这个功能。但是,这个插件目前存在…

岛津分子泵软件TMP系列分子泵EI-D系列控制电源 EI Monitor(232和485控制)

岛津分子泵软件TMP系列分子泵EI-D系列控制电源 EI Monitor(232和485控制)

探索Unity:从游戏引擎到元宇宙体验,聚焦内容创作

unity是实时3D互动内容创作和运营平台,包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、…

图为大模型一体机新探索,赋能智能家居行业

在21世纪的今天,科技的飞速进步正以前所未有的速度重塑着我们的生活方式。从智能手机到物联网,从大数据到人工智能,每一项技术创新都在为人类带来前所未有的便利与效率。其中,图为AI大模型一体机作为人工智能领域的最新成果&#…

DiskGenius一键修复磁盘损坏

下午外接磁盘和U盘都出现扇区损坏,估计就是在开着电脑,可能是电脑运行的软件还在对磁盘进行读写,不小心按到笔记本关机键,重新开机读写磁盘分区变得异常卡顿,估摸就是这个原因导致扇区损坏。在进行读写时,整…

深度学习:YOLO v1网络架构、损失值及NMS极大值抑制

引言 随着深度学习的发展,物体检测(Object Detection)成为计算机视觉领域的一项重要任务。传统的物体检测方法往往依赖于手工设计的特征和滑窗搜索策略,效率低下且效果有限。近年来,基于深度学习的方法,尤…

leetcode-63-不同陆路径II

题解: 1、设dp[i][j]为到达(i,j)点的路径。当grid[i][j]1时,dp[i][j]0;否则dp[i][j]为到达(i-1,j)的最多路径与到达(i,j-1)的最多路径之和。当(i,j)位于第一行时,dp[i][j]dp[i][j-1]。当(i,j)位于第一列时,dp[i][j]dp[i-1][j]。 2、初始化M…

MATLAB锂电概率分布模型

🎯要点 概率分布等效电路模型结合了路径相关速率能力及状态估计中滞后效应。纠正了充电状态中时间误差累积及避免开路电压中电压滞后现象。使用电流方向和电池容量相关函数描述开路电压,并使用微分方程描述电压滞后现象。模型结构基于一级相变的材料机制…

新华三H3CNE网络工程师认证—OSPF路由协议

OSPF是典型的链路状态路由协议,是目前业内使用非常广泛的IGP协议之一。本博客将对OSPF路由协议进行总结。 OSPF目前针对IPv4协议使用的是OSPFVersion2(RFC2328); 针对IPv6协议使用OSPFVersion3(RFC2740)。如无特殊说明本章后续所指的OSPF均为OSPF Versi…

监督学习之逻辑回归

逻辑回归(Logistic Regression) 逻辑回归是一种用于二分类(binary classification)问题的统计模型。尽管其名称中有“回归”二字,但逻辑回归实际上用于分类任务。它的核心思想是通过将线性回归的输出映射到一个概率值…

【MATLAB源码-第193期】基于matlab的网络覆盖率NOA优化算法仿真对比VFINOA,VFPSO,VFNGO,VFWOA等算法。

操作环境: MATLAB 2022a 1、算法描述 NOA(Network Optimization Algorithm,网络优化算法)是一个针对网络覆盖率优化的算法,它主要通过优化网络中节点的分布和配置来提高网络的整体覆盖性能。网络覆盖率是衡量一个无…

基于STM32G0的USB PD协议学习(3)

0、前言 STM32这个平台资源确实很不错,但是里面的PD代码是一个lib库文件,没有开源。可以做来玩玩,但是如果要满足USB-IF认证需求的话,谨慎!!! 这段时间较为繁忙,断更有点严重... …

植物健康,Spring Boot来保障

5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…

Linux之权限(2)

权限(2) 操作:有VS没有 只有文件的拥有者或者root,能修改自己的权限 Linux下能执行真的是一个可执行文件可执行权限 user,group,other和我自己进行身份对比,依次只对比一次 8进制数值表示方法 chmod ax /home/abc.…

基于vue、VantUI、django的程序设计

首先构建vue项目,构建项目点这里 安装 npm install axios axios简介 Axios 是一个基于 promise 的 HTTP 库,用于发起请求和接收响应,实现异步操作 基本使用 axios对象 请求响应拦截 在utils文件夹里新建ajax.js 创建一个axios对象并…

云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航

2024 年 10 月 22 日,首个国产移动操作系统 —— 华为原生鸿蒙操作系统 HarmonyOS NEXT 正式面世,成为继 iOS 和 Android 后的全球第三大移动操作系统。HarmonyOS NEXT,从系统内核、数据库根基,到编程语言创新、AI(人工…

【WebGis开发 - Cesium】三维可视化项目教程---图层管理拓展图层透明度控制

目录 引言一、为什么要开发图层透明度控制功能二、开发思路整理1. cesium图层api查询1.1 imageryLayer 透明度1.2 primitive 透明度 三、代码编写1. 修改原有图层管理代码2. 新增页面结构3. 编写图层透明度控制方法 四、总结 引言 本教程主要是围绕Cesium这一开源三维框架开展的…

如何通过sip信令以及抓包文件分析媒体发到哪个地方

前言 问题描述:A的媒体没转发到B,B只能听到回铃音,没有A的说话声音,并且fs这边按正常的信令发送了. 分析流程 分析早期媒体发送到哪一个IP 10.19.0.1发送了一个请求给10.19.0.157这个IP,然而这里的SDP媒体地址&am…

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段(Mounting)补充2. 更新阶段(Updating)补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段(Unmounting) 二、React组件间的…