Java 在客户端上使用正确的程序打开webdav链接
我们有一个基于浏览器的应用程序,它集成了webdav服务器。我们在(webdav)servlet上生成特定文档的URL。(Java 在客户端上使用正确的程序打开webdav链接,java,applet,webdav,Java,Applet,Webdav,我们有一个基于浏览器的应用程序,它集成了webdav服务器。我们在(webdav)servlet上生成特定文档的URL。(https://server.com/webdav/path/to/file.doc) 我们正在寻找的是一个很好的方式为我们的客户打开这些链接直接在适当的程序。例如,对于windows用户,“https://server.com/webdav/path/to/excelfile.xls“应在MS Excel中打开,而相同的链接应在Linux上打开OOCalc 到目前为止,我们
https://server.com/webdav/path/to/file.doc
)
我们正在寻找的是一个很好的方式为我们的客户打开这些链接直接在适当的程序。例如,对于windows用户,“https://server.com/webdav/path/to/excelfile.xls
“应在MS Excel中打开,而相同的链接应在Linux上打开OOCalc
到目前为止,我们一直在使用一个小applet,它映射了扩展、操作系统和程序,并通过Runtime.getRuntime().exec(…)
打开程序。这种方法在Ms Windows上运行得还行,但在Linux和mac客户端上存在问题,而且非常不灵活
有更好的方法吗?这不是java.awt.Desktop类设计的目的吗 我之所以说“专为”是因为它在很多方面做得不好或不正确,但在某些方面确实有效。它缺少了“openwith”选项,比如如果没有注册文档,操作系统必须提示您应该使用什么来打开文档
它可能会将url解释为web url,打开浏览器,然后浏览器可能会委托打开文件?在这种情况下,您必须将文档下载到临时文件,然后使用desktop.open?如果您将文件的MIME类型设置为正确的格式,则所有浏览器都应该能够处理它们。然后,用户可以决定对该类型执行默认操作(打开acrobat、word、excel、记事本)或选择自定义操作。不幸的是,小程序是目前唯一的解决方案。但在极少数情况下,我们使用
“SharePoint.OpenDocuments”
和“应用程序/x-SharePoint”
插件。您可以与您的解决方案进行比较。目前,它在Internet Explorer 10/11中运行良好。但您必须添加一个注册表项,以允许Office以读/写方式打开从浏览器传递的文档。注册表项如下所示:
2013年办公室:
HKEY\U CURRENT\U USER\Software\Microsoft\Office\15.0\Common\Internet\OpenDocumentsReadWriteWhileBrowsing=0x1(DWORD)
Office 2010:
HKEY\U CURRENT\U USER\Software\Microsoft\Office\14.0\Common\Internet\OpenDocumentsReadWriteWhileBrowsing=0x1(DWORD)
有关设置密钥的信息,请参阅本文:
在我对这个问题的回答中找到的javascript以及附带的注释可能会有所帮助。基本上,客户机决定如何处理文件。不幸的是,我在Linux/Mac方面没有任何帮助。
Java.awt.Desktop
不幸没有帮助。这会在小程序中引发未找到“文件”的异常。考虑到WebDav的使用,我也怀疑它是否能打开正确的程序。HTTP(S)。临时文件也不是一个选项,因为它会干扰保存过程(我们希望我们的客户机“直接”在我们的服务器上编辑这些文档。)有趣的是,您知道这是crossbrowser吗?(现在大多数我们的用户都在chrome上工作)@pvgoddijn开箱即用,没有。也就是说,Firefox下载到本地驱动器,然后将其交给office,因此office甚至从未看到WEBDAV url。但是,如果您设置了一个类似于SharePoint Designer的本地URI,则该URI可用于所有浏览器。感谢您提供的信息(但这不是一个选项,因为由于安全问题,我们无法允许将这些文档安全保存在临时文件夹中)。不过,这可能对其他人有用