以下是我们的设置&要求:
自定义WebDAV实现是最好的方法吗?请注意,我们可能不需要WebDAV的所有功能来支持上述要求。你知道其他选择吗?
如果要实现自定义WebDAV实现,除了http://www.webdav.org/之外,您能否推荐一些好的资源(商业/开源IIS插件,.Net,docs等样本)?顺便说一句,我不喜欢安装像Sharepoint这样庞大的CMS来支持这么小的要求!
我在SO上发现了一个关于自定义WebDav实现的帖子:What are your experiences implementing/using WebDAV?这听起来很令人沮丧:((仅在IIS根目录上可用,需要Windows身份验证等)
提前致谢!
答案 0 :(得分:5)
我最近开发了一个使用Apache Tomcat WebdavServlet作为基础的简单Webdav服务器。我刚刚从SVN获得了源代码(见下文)并对其进行了修改以满足我的需求。您可以在其中的不同方法中添加代码:
doGet
doLock
doPut
doUnlock
etc...
我在企业CMS前面使用它作为一个可怜的mand 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;
}
我也意识到你的服务器是IIS而不是基于Apache的,但是你可以随时使用IIS进行Tomcat安装(这就是我们的工作),并使用JK ISAPI过滤器而不是AJP。无论如何,这是一种做事方式,不需要你购买任何东西。
答案 1 :(得分:2)
当Office从网址打开文件时,它会检查此网址是否支持WebDav。如果是这种情况,并且WebDav允许写入此URL,则Office将允许用户编辑该文件。
当用户点击浏览器中的链接时让Office打开文件似乎最适合使用这样的网址:
ms-word:ofe|u|https://someOfficeFile.docx
当用户的计算机上没有Office时,此样式的URL不起作用。
与安装在用户硬件上的软件集成当然很棘手,因为开发人员无法控制用户的硬件。
最好是在浏览器中完全完成Office文档编辑。 Office365就是这样做的。通过WOPI协议将业务线应用程序与Office365集成。
Office通过此协议集成到DropBox等。 但是,似乎微软尚未准备好允许大量LOB应用程序与Office365集成。
也许微软有朝一日会发布一个SDK来进行这种集成,而无需从头开始编写WOPI。
答案 2 :(得分:1)
WebDAV有什么问题?存在一些第三方WebDAV服务器组件,您可以将它们插入服务器端应用程序(www.webdavsystem.com,我们的WebDAVBlackbox)。
或者,您可以在客户端上创建一个虚拟文件系统,该系统将使用其他协议与服务器通信(如果您更容易实现以这种方式处理或FTP或SFTP,则使用普通HTTP)。