【发布时间】:2013-10-02 13:13:31
【问题描述】:
我正在开发一个 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://”。
我看到了对该页面的多个引用:Links to local pages do not work,它描述了您无法使用 Firefox 从网页打开文件的原因,并提供了一些解决方法。不幸的是,它只提供了两个选项:在每个浏览器实例上安装插件,或为每个浏览器实例创建用户首选项文件。这些选项都不可接受,因为我们的用户太多。我工作的公司不愿意对需要访问此链接的每台机器应用任何东西。除此之外,无论如何我都尝试了插件和首选项文件,唯一对我有用的是IE Tab插件。我认为 LocalLinks 不起作用的原因是因为我试图打开一个文件夹,而不是一个文件。
这个 stackoverflow 问题描述了 Chrome 的类似选项:Can Google Chrome open local links? 但同样,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# 中的控制器操作打开文件夹(因为如果没有,我想在打开文件夹之前创建文件夹) t 存在),但客户端的 javascript 或 html 是可以接受的。对于 Internet Explorer,我可以在 C# 代码中创建该 javascript,方法是将其包装在 MVC C# 控制器中内置的 JavaScript(...) 函数中。在 Firefox 和 Chrome 中测试 IE Tabs 时,我必须将其定义为 href 链接,而不是打开窗口的函数,否则 IE Tabs 不会将其识别为链接。但对于我们的业务需求,这些都不是可接受的解决方法。
【问题讨论】:
-
我怀疑,如果您所描述的内容是可能的,那将代表一个安全漏洞。
标签: javascript google-chrome firefox file-io directory