【问题标题】:How do you open a file folder through a link on website in Firefox and Chrome?如何在 Firefox 和 Chrome 中通过网站上的链接打开文件夹?
【发布时间】: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


【解决方案1】:

在我想出一个可行的解决方案之前,该请求已被放弃,但如果其他人仍在为这个问题苦苦挣扎,我将描述不需要任何工作站定制的解决方法。

从技术上讲,他们不需要使用内置文件资源管理器来打开文件夹。相反,在不破坏任何浏览器安全规则的情况下显示企业所需信息的一种创造性方法是在不打开文件资源管理器的情况下遍历文件,然后在浏览器窗口中显示文件夹/文件列表。

使用Directory.EnumerateDirectories(filepath)Directory.EnumerateFiles(filepath),您可以获得要显示的文件夹和文件列表。当用户单击其中一个文件夹时,再次调用这些方法以获取下一级文件夹和文件名。当用户单击文件时,下载/打开它。这些方法将文件夹和文件名作为字符串列表返回,因此您只需在浏览器中使用自定义图标呈现列表。 (这些方法来自 C# 的 System.IO 库。)

【讨论】:

    【解决方案2】:

    这是简单的html代码:

    <input type="file" webkitdirectory>

    但是这段代码的问题是它只能在谷歌上运行!

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 2021-07-15
      • 2016-10-10
      • 1970-01-01
      • 2016-07-13
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      相关资源
      最近更新 更多