Office web app提供了很全面的功能,不仅可以使用sharepoint查看文档,也可以将其集成到我们自己的项目中。
如果项目只用到了文档的在线预览功能,直接使用owa服务生成的url或者 标签就能够在网页中浏览office格式的文档。但是如果希望使用其他功能,还是需要自己开发wopi host。
我们需要通过wopi协议将owa的服务集成到我们自己的系统之中,WOPI的全称是“Web Application Open PlatformInterface”,中文名为“Web应用程序开放平台接口协议”。
在WOPI中,存在WOPI Server(或者称之为WOPI Host)和WOPI Client两种角色,owa用作WOPI Client,而我们所开发的部分用作WOPI Server。这个协议的交互过程见下图:
在图中我们能够看到,WOPI Client共向WOPI Server进行了两次请求分别是Tell me about the file以及Give me the file。因此我们所开发的WOPI Server至少需要提供两个接口以实现这两个功能。
第一个接口是Tell me about the file,这个接口的url为:
GET http:// [owas.domain]/<...>/wopi/files/filename
owas.domain是服务器的地址,file是文件的路径,此接口以JSON的格式返回文件的信息,JSON各参数详见WOPI消息体结构,但至少要包含以下信息:
{
\" FileName\": \"Sample Document.docx\",
\"OwnerId\": \"tylerbutler\",
\"Size\": 300519,
\"SHA256\":\"+17lwXXN0TMwtVJVs4Ll+gDHEIO06l+hXK6zWTUiYms=\",
\"Version\":\"GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA====\"
}
FileName: 文件名。
OwnerId: 文件所有者的唯一编号。
Size: 文件大小,以bytes为单位。
SHA256: 文件的256位bit的SHA-2编码散列内容。(Wordweb app必有,excel和ppt可以为null)
Version: 文件版本号,文件如果被编辑,版本号也要跟着改变。
另一个是Give me the file,用于WOPI Client获取文件,这个接口的url为
GET http:// [owas.domain]/<...>/wopi/files/filename/contents
这个接口通过文件流的方式返回文件,注意返回的文件名就叫“contents”即可,变成原文件的名称不仅费事,还有可能出现问题。
如果需要实现在线编辑的功能,还需要增加一个POST的接口,用于将修改后的文件上传,url如下:
POST http:// [owas.domain]/<...>/wopi/files/filename
可以看到这个接口除了HTTP请求方式不同,url和第一个接口时一样的,这样WOPI Client能够很容易的定位文档的位置。
最后在浏览器中打开文档的地址类似下面的格式:
http://[owas.domain]/we/WordEditor .aspx?WOPISrc=http%3a%2f%2flocalhost%3a8080%2fwopi%2ffiles%2fword.docx&access_token=[token]&ui=zh-CN
http://[owas.domain]/p/PowerPoint .aspx?PowerPointView=ReadingView&WOPISrc=http%3a%2f%2flocalhost%3a8080%2fwopi%2ffiles%2fppt.pptx&access_token=[token]&ui=zh-CN
http://[owas.domain]/x/_layouts/xlviewerinternal.aspx?WOPISrc=http%3a%2f%2flocalhost%3a8080%2fwopi%2ffiles%2fBook1.xlsx&access_token=[token]&ui=zh-CN
实现的效果见下图:
---------------------
作者:steveyg
来源:CSDN
原文:https://blog.csdn.net/steveyg/article/details/52814803
版权声明:本文为博主原创文章,转载请附上博文链接!
继续阅读与本文标签相同的文章
从整车到自动驾驶大脑 打造自有供应链生态
戴森一年净赚100亿元的秘密,都隐藏在这里
-
基于 APIGateway 打造生产级别的 Knative 服务
2026-05-18栏目: 教程
-
棱镜丨圆通回应“承诺达”解散:由直营模式改回加盟商授权经营
2026-05-18栏目: 教程
-
自从有了它,我在微信上吵架就没输过!
2026-05-18栏目: 教程
-
OTT终端不断地在全球范围扩展,未来万物互联不再是梦想
2026-05-18栏目: 教程
-
2019云栖大会 | 开源数据库界大神集体现身,邀你共同感受“开源魅力”
2026-05-18栏目: 教程
