2011-07-22 135 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。

相关问题