我正在开发一个需要具有从文件服务器打开文档文件夹的链接的 Web 应用程序。该文件夹可以在新的浏览器选项卡或新窗口中打开,也可以使用计算机的默认文件浏览器程序(即 Windows 资源管理器)打开。这个javascript应该可以解决问题:
window.open('file://///fileserver.companyname/public/Documents/','_blank);
这个html也应该工作:
<a href="file://///fileserver.companyname/public/Documents/">Open Documents</a>
但这些都只能在 Internet Explorer 中运行,我们的用户总是使用 Firefox 和 Chrome。显然,当从“http://”网站调用请求时,Firefox 和 Chrome 的默认安全设置不允许您打开“file://”。
我已经看到了对该页面的多个引用:指向本地页面的链接不起作用,它描述了您无法使用 Firefox 从网页打开文件的原因,并提供了一些解决方法。不幸的是,它只提供了两个选项:在每个浏览器实例上安装插件,或为每个浏览器实例创建用户首选项文件。这些选项都不可接受,因为我们的用户太多。我工作的公司不愿意对需要访问此链接的每台机器应用任何东西。除此之外,无论如何我都尝试了插件和首选项文件,唯一对我有用的是 IE Tab 插件。我认为 LocalLinks 不起作用的原因是因为我试图打开一个文件夹,而不是一个文件。
这个 stackoverflow 问题描述了 Chrome 的类似选项:Google Chrome 可以打开本地链接吗?但同样,LocalLinks 插件对我不起作用,而且插件无论如何也不可接受。
我还发现了一个网站,该网站建议在 Chrome 中使用命令行参数顶部打开文件(http://www.askyb.com/chrome/open-local-file-in-google-chrome/)和一个展示如何自动应用参数(https://askubuntu.com/questions/160245/making-google-chrome-option-allow-file-access-from-files-permanent),但如果我正确阅读它仍然涉及应用更改访问我们网站的每台计算机。
有没有办法完全以编程方式在Firefox 和 Chrome中打开文件夹,即在我的 Web 应用程序 C# 或 Javascript 代码中,无需安装插件或将首选项文件添加到单个计算机?我无法更改任何这些业务需求。
旁注:我们将 C# 与 MVC 4 一起使用。我更愿意使用 C# 中的控制器操作打开文件夹(因为如果文件夹尚不存在,我想在打开它之前创建文件夹),但 javascript 或 html客户端是可以接受的。对于 Internet Explorer,我可以在 C# 代码中创建该 javascript,方法是将其包装在 MVC C# 控制器中内置的 JavaScript(...) 函数中。在 Firefox 和 Chrome 中测试 IE Tabs 时,我必须将其定义为 href 链接,而不是打开窗口的函数,否则 IE Tabs 不会将其识别为链接。但是对于我们的业务需求,这些都不是可接受的解决方法。