將Office Web App整合到自己的項目中(WOPI Host 開發)

Office web app提供了很全面的功能,不僅可以使用sharepoint查看文檔,也可以將其集成到我們自己的項目中。

如果項目只用到了文檔的在線預覽功能,直接使用owa服務生成的url或者iframe標籤就能夠在網頁中瀏覽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消息體結構,但至少要包含以下信息:

{
"BaseFileName": "Sample Document.docx",
"OwnerId": "tylerbutler",
"Size": 300519,
"SHA256":"+17lwXXN0TMwtVJVs4Ll+gDHEIO06l+hXK6zWTUiYms=",
"Version":"GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA===="
}

BaseFileName: 文件名。

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/WordEditorFrame.aspx?WOPISrc=http%3a%2f%2flocalhost%3a8080%2fwopi%2ffiles%2fword.docx&access_token=[token]&ui=zh-CN

http://[owas.domain]/p/PowerPointFrame.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

 實現的效果見下圖:


服務器實現可以參考https://github.com/marx-yu/WopiHost,感覺實現的比較全面而且代碼比較簡潔。

參考文章:http://www.cnblogs.com/poissonnotes/p/3267190.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章