2011-07-22 69 views
8

以下是我們的設置&要求:從Web應用程序編輯MS Office文檔:自定義WebDaV實現或...?

  • 有訪問通過SSL +基本身份驗證的公共Web應用程序。大多數這些應用程序都在ASP.Net中;傳統的一對是傳統的ASP。服務器是Win 2003/IIS 6.0
  • 此應用程序需要支持(大部分)MS Office文檔的在線編輯(2007 & 2010)。文檔本身和應用程序的內容一起存儲在數據庫中。
  • 用戶應該能夠通過HTML鏈接打開文檔;相應的外部Office應用程序(例如MS Word)應該以編輯模式打開文檔(具有排他鎖),並且當用戶按下保存按鈕時,文檔應該被髮回給應用程序。
  • 最好不要在客戶端部署外部插件/ ActiveX控件。

自定義WebDAV實現是否是最好的方法?請注意,我們可能不需要WebDAV的所有功能來支持上述要求。你知道任何替代品嗎?

如果自定義的WebDAV實現是要走的路,除了http://www.webdav.org/之外,能否請您推薦一些好的資源(商業/開源IIS插件,.Net,docs樣例等)?順便說一句,我不喜歡安裝像Sharepoint這樣龐大的CMS來支持這樣一個小的需求!

我發現一個線程SO有關自定義WebDAV實現:What are your experiences implementing/using WebDAV?聽起來如此令人沮喪:((可用的編緝只在IIS根,要求Windows身份驗證等)

在此先感謝

回答

1

這有什麼錯! WebDAV的?存在着幾個第三方WebDAV服務器組件,你可以插入到你的服務器端應用程序(www.webdavsystem.com,我們WebDAVBlackbox)。

另外,您可以將與通信的客戶端上創建一個虛擬文件系統服務器usi ng一些其他的協議(如果你更容易實現這種處理方式或者FTP或SFTP,則是普通的HTTP協議)。

+0

謝謝!我決定用這個:與SQL後端的WebDAV(http://thehojusaram.blogspot.com/2007/06/c-webdav-server-with-sql-backend-source.html)作爲出發點和建立我自己的服務器組件 – Venkat

5

我最近開發了一個簡單的使用Apache Tomcat WebdavServlet作爲基礎的Webdav服務器。我剛剛從SVN獲得源代碼(請參閱下文),並對其進行了修改以滿足我的需求。你可以在裏面添加代碼,以不同的方法:

doGet 
doLock 
doPut 
doUnlock 
etc... 

我使用它作爲一個企業CMS的前一個貧窮的芒WebDAV的,所以每個方法中我添加API調用來獲取文件,將其鎖定,版本,或其他。基本上他們不想從供應商處購買webdav產品,而Tomcat是免費的。

至於在客戶端上打開Office文件,您可能需要依賴Office安裝附帶的庫(至少自Office XP起)。請注意,該組件稱爲SharePoint等等,但它不需要任何地方安裝SharePoint。我在這裏有一個使用庫的js代碼片段,顯然你會修改以滿足你的需求。我意識到你說沒有ActiveX,但沒有它,我不能100%確定你將如何打開鏈接。歡迎您嘗試其他方式。

function webedit(id) { 
     if (window.ActiveXObject) { 
      var ed; 
      try { 
       //Office 2003 
       ed = new ActiveXObject('SharePoint.OpenDocuments.2'); 
      } catch (err1) { 
       try { 
        //Office 2000/XP 
        ed = new ActiveXObject('SharePoint.OpenDocuments.1'); 
       } catch (err2) {     
        try { 
         //Office 2007 
         ed = new ActiveXObject('SharePoint.OpenDocuments.3'); 
        } catch (err3) {     
         window.alert('Unable to create an ActiveX object to open the document. This is most likely because of the security settings for your browser.'); 
         return false; 
        } 
       } 
      } 
      if (ed) { 
       ed.EditDocument('<%=webdavPath%>/webdav/'+id); 
       return false; 
      } else { 
       window.alert('Cannot instantiate the required ActiveX control to open the document. This is most likely because you do not have Office installed or you have an older version of Office.'); 
       return false; 
      } 
     } else { 
      window.alert('Internet Explorer is required to use this feature.'); 
     } 
     return false;  
    } 

我也知道你的服務器是IIS,而不是基於Apache的,但你總是可以在前面的Tomcat與IIS安裝(這是我們做什麼),並使用JK ISAPI篩選器在AJP。無論如何,這是一種做事方式,並不需要你購買任何東西。

SVN源:http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/java/org/apache/catalina/servlets/WebdavServlet.java

+1

感謝客戶端提示!當我說ActiveX不是一個選項時,我的意思是我不喜歡安裝*我自己的*新的ActiveX控件。但是,如果客戶端已經擁有Sharepoint ActiveX控件,那麼這是一個很好的選擇。另外,我發現有用以下鏈接:這裏指定http://sharingpoint.blogspot.com/2006_05_01_archive.html 2)註冊表設置: 1)編寫自定義JavaScript如果的SharePoint控件未在客戶端安裝HTTP: //www.webdavsystem.com/server/documentation/ms_office_read_only 對於服務器端,請參閱我的尤金的響應! – Venkat

2

當Office從URL打開一個文件時,它會檢查是否WebDAV是支持這個網址。如果是這種情況,並且WebDav允許寫入此URL,則Office將允許用戶編輯該文件。

利用Office中打開該文件,當用戶單擊瀏覽器中的鏈接似乎工作最好與這樣的網址:

ms-word:ofe|u|https://someOfficeFile.docx 

URL在這一風格時,辦公室是不存在的不工作用戶的機器。

與安裝在用戶硬件上的軟件集成當然很棘手,因爲開發人員無法控制用戶的硬件。

如果Office文檔編輯可以完全在瀏覽器中完成將是最好的。 Office365這樣做。集成一個業務線應用程序與Office365是通過WOPI協議完成的。

Office通過此協議集成到DropBox等。然而,似乎微軟尚未準備好允許大量的LOB應用程序與Office365集成。

也許微軟有一天會發佈一個SDK做這種整合沒有從頭開始編寫WOPI。

相關問題