上一篇文章已經介紹了整個安裝過程了。只要在瀏覽器中輸入文檔轉換server的ip,會自動跳轉,出現如下頁面。
那么就可以實現本地文檔預覽了,你可以試試。(注意;是本地哦,路徑不要寫錯,類似“\\file\share”。如果不能預覽,那么還要注意文檔的權限哦,不多說。)
看到這個,就算完成80%以上的工作了,因為不需要寫任何代碼,只要安裝好服務器,就可以實現本地文件預覽了。那么問題就來了,怎么實現http預覽,跨服務器預覽呢?且看下面。
如果要想實現http訪問,跨服務器訪問,那么就要實現wopi協議了。這個不是只能實現本地文件預覽。
這個也是大家最關心的了。剛開始的時候我也一直不知道怎么弄,問了好多其他童鞋,都說只能實現本地文件預覽。后來尋尋覓覓,終於找了C#的實現,我嘗試着用php簡單的實現了,很簡單。繼續往下看吧。
以下也主要是參考:http://www.cnblogs.com/poissonnotes/p/3277280.html
這篇文章也是超級經典。(上篇安裝的也是參照這個作者的,文章很經典)
我也不知羞恥,重新用php炒一下剩飯。
1、主要實現wopi協議(http://msdn.microsoft.com/en-us/library/hh622722(v=office.12).aspx 參看WOPI協議,裝下13,可以下載下來看看)
WOPI通訊主要實現兩個服務:
1)、一個是CheckFileInfo服務
2)、一個是GetFile服務
2、創建服務
1)、首先創建CheckFileInfo服務
我們先確定這個服務的路由地址
設置為:HTTP://server/<...>/wopi*/files/?access_token=
注意:這里沒有驗證access_token,請自行驗證。很多同學問access_token怎么來的,這個自己設置就行,不是必須的。
代碼實現如下,主要是返回一個json對象的文件信息。
在瀏覽器中輸入:http://localhost/wopihost/wopi/files/test.docx(項目中需要存在該test.docx文件),返回如下數據,則表示成功
2)、再來制作GetFile服務
我們先確定這個服務的路由地址
設置為:HTTP://server/<...>/wopi*/files//contents?access_token=
代碼如下:GetFile服務主要是返回文件的數據流。
3)、驗證服務
http://192.168.1.21/hosting/discovery
通過以上鏈接返回的信息,可以知道不同類型的文檔訪問的鏈接。
在瀏覽器輸入以下鏈接:http://192.168.1.21/wv/wordviewerframe.aspx?WOPISrc=http%3A%2F%2F192.168.1.102%2Fwopihost%2Fwopi%2Ffiles%2Ftest.docx
(注意test文檔必須存在,路徑正確哦)
其中:192.168.1.21是office web apps server,192.168.1.102是實現wopi服務的server
如果出現如下,則表示成功。 很簡單吧,大家可以隨意的集成到自己的項目中去了。
注意:如果沒有成功,不要灰心,可以先調試excel,因為excel沒有驗證SHA256算法,如果excel成功了,其他類型文檔沒有成功,那么說明SHA256算法實現不對。
附上我的wopihost開源實現,僅供參考:https://github.com/cisiqo/WopiHost (最近又抽筋了,訪問比較慢)
另外再附上公司使用這套方案的轉換頁面: 第一個使用了iframe,第二個正常訪問的
==========分割線=========
當然,office web apps不僅僅做可以預覽,當然也可以在線編譯了。下面附一張別人驗證的截圖(http://blog.csdn.net/ma_jiang/article/details/24057847 評論中有貼過的):
以上edit和remark我沒有做過驗證,這個也是我接下來的工作,有進展我會繼續博客的。
view和mobileview已經驗證,目前測試https下,好像預覽也有問題,不過這個是可以解決的,傳輸過程可以使用https,服務器之間可以不用走https協議。
========再分割=======
在查資料的時候發現,我們的競爭對手明道(企業社交應用)也是用這個方案(https://docview.mingdao.com),不知道他們使用的情況如何。