4

我正在开发一个需要具有从文件服务器打开文档文件夹的链接的 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 不会将其识别为链接。但是对于我们的业务需求,这些都不是可接受的解决方法。

4

2 回答 2

2

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

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

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

于 2014-11-16T22:00:26.307 回答
0

这是简单的html代码:

<input type="file" webkitdirectory>

但这个代码的问题是它只适用于谷歌!

于 2014-04-09T14:56:59.583 回答