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 
版权声明:本文为博主原创文章,转载请附上博文链接!

收藏 打印