从Web应用程序编辑MS Office文档:自定义WebDaV实现还是......?

Ven*_*kat 8 asp.net sharepoint webdav ms-office

以下是我们的设置和要求:

  • 有一个公共Web应用程序可通过SSL +基本身份验证访问.这些应用程序大多数都在ASP.Net中; 传统的几个是经典的ASP.服务器是Win 2003/IIS 6.0
  • 此应用程序需要支持(主要)MS Office文档的在线编辑(2007和2010).文档本身与应用程序的内容一起存储在数据库中.
  • 用户应该能够通过HTML链接打开文档; 相应的外部Office应用程序(比如MS Word)应该以编辑模式打开文档(使用独占锁定),当用户按下Save按钮时,文档应该回发到应用程序.
  • 优选地,不需要在客户端部署外部插件/ ActiveX控件.

自定义WebDAV实现是最好的方法吗?请注意,我们可能不需要WebDAV的所有功能来支持上述要求.你知道任何替代方案吗?

如果要实现自定义WebDAV实现,除了http://www.webdav.org/之外,您能否推荐一些好的资源(商业/开源IIS插件,.Net,docs等样本)?顺便说一句,我不喜欢安装像Sharepoint这样庞大的CMS来支持这么小的要求!

我在SO上发现了一个关于自定义WebDav实现的线程:您在实现/使用WebDAV方面有什么经验? 这听起来很令人沮丧:((仅在IIS根目录上可用,需要Windows身份验证等)

提前致谢!

Bre*_*ann 5

我最近开发了一个使用Apache Tomcat WebdavServlet作为基础的简单Webdav服务器.我刚刚从SVN获得了源代码(见下文)并对其进行了修改以满足我的需求.您可以将代码添加到其中的不同方法:

doGet
doLock
doPut
doUnlock
etc...  
Run Code Online (Sandbox Code Playgroud)

我在企业CMS前面使用它作为一个可怜的mans webdav,因此在每个方法中我添加了API调用来获取文档,锁定它,版本或其他任何东西.基本上他们不想从供应商那里购买webdav产品,Tomcat是免费的.

至于在客户端上打开Office文件,您可能需要依赖Office安装附带的库(至少从Office XP开始).请注意,该组件称为SharePoint blah blah,但它不需要在任何地方安装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;    
    }
Run Code Online (Sandbox Code Playgroud)

我也意识到你的服务器是IIS而不是基于Apache的,但是你可以随时使用IIS进行Tomcat安装(这就是我们的工作)并使用JK ISAPI过滤器而不是AJP.无论如何,这是一种做事方式,不需要你购买任何东西.

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


Eug*_*its 1

WebDAV 有什么问题?有几个第三方 WebDAV 服务器组件,您可以将它们插入服务器端应用程序(www.webdavsystem.com,我们的WebDAVBlackbox)。

或者,您可以在客户端上创建一个虚拟文件系统,该系统将使用其他协议与服务器进行通信(如果您更容易实现这种处理方式,则可以使用纯 HTTP,或者使用 FTP 或 SFTP)。