从链接打开本地文件夹

如何通过点击任何链接打开本地文件夹视图?

我尝试了很多选项

<a href="file:///D:/Tools/">Open folder</a>

<a onclick="file:///D:/Tools/">Open folder</a>

<a onclick="window.open(file:///D:/Tools/)">Open folder</a>

由于安全限制,所有现代浏览器都禁用链接到本地​​资源。

对于Firefox :

为了安全起见,Mozilla应用程序阻止从远程文件到本地文件(和目录)的链接。 这包括链接到硬盘上的映射networking驱动器上的文件,并可通过统一命名约定(UNC)path访问。 这可以防止一些不愉快的可能性,包括:

  • 允许网站通过检查默认安装path来检测您的操作系统
  • 允许网站利用系统漏洞(例如Windows 95/98中的C:\ con \ con)
  • 允许网站检测浏览器首选项或读取敏感数据

对于IE :

Internet Explorer 6 Service Pack 1(SP1)不再允许从Internet区域浏览本地计算机。 例如,如果Internet站点包含指向本地文件的链接,则当用户单击该链接时,Internet Explorer 6 SP1将显示一个空白页面。 以前版本的Windows Internet Explorer跟随到本地文件的链接。

对于歌剧 (在安全咨询的背景下,我确信有一个更加规范的链接):

为了安全起见,Opera不允许网页链接到用户本地磁盘上的文件

解决scheme:启动一个可下载的链接

以下在所有浏览器中都能正常工作,但是一如既往的警告。

背景:

“URL快捷方式”取决于操作系统。 以下解决scheme适用于MS Windows,因为环境之间缺乏标准。

如果您需要linux支持下面的解决scheme,请参阅这篇文章 。
*我与文章YMMV没有关系。

url快捷方式有两种forms:

  1. 带有.URL扩展名的文件是基于文本的。 可以dynamic生成。

    [InternetShortcut]
    URL =文件:/// d:/

  2. .LNK扩展名的文件是二进制文件。 它们可以dynamic生成,但需要iShelLinkInterface实现者。 这是由默认的操作系统限制,这正确地阻止一个IIS进程到达壳牌复杂。

.URL是推荐的解决scheme,因为dynamic生成在Web语言/框架中是可行的,并且允许KISS实现。


概述/回顾:

  1. 安全性限制不允许您直接从页面打开path/启动浏览器(如@Pekka所述)。
  2. 外部托pipe的站点(不在本地计算机上)不允许file:/// … uri在默认安全权限下。

解:

提供可下载的链接(.URL或.LNK)到资源。 浏览器的行为将在后期解释。

选项1:生成一个.lnk文件并将其保存到服务器。 由于.LNK文件的二进制属性,这不是推荐的解决scheme,但是预生成的文件应该是可行的。

选项2:生成.url文件并将其保存到服务器或dynamic生成。 在我的情况下,我dynamic创build.URL文件。


解决scheme详细信息(.URL):

  1. 将.url添加到您的Web服务器中可用的MIMEtypes。

    对于IIS打开站点,请select“MIMEtypes”,然后添加以下内容:

    文件扩展名= .url
    MIMEtypes:application / internet-shortcut

    Per @cremax …对于Webkit浏览器(如Apache服务器上的Chrome),将此代码添加到.htaccess或http.config:

    SetEnvIf Request_URI“.url $”requested_url = url Header add Content-Disposition“attachment”env = requested_url

  2. .url文件是一个文本文件格式如下(同样,这可以dynamic生成)。

    文件内容:

    [InternetShortcut]
    URL =文件:/// d:

  3. 提供一个链接到生成.url文件的脚本或文件本身。

    如果您只是将.urlfile upload到服务器,请将以下内容添加到HTML中:

    <a href="URIShortcut.url">Round-About Linking</a>


浏览器依赖行为

Chrome :下载/保存file.url然后打开
在Chrome中,可以通过select“始终打开此types的文件”选项来增强此行为。

FireFox :下载/保存file.url然后打开

Internet Explorer :点击“打开”直接进入目录(不需要保存快捷方式)

Internet Explorer具有首选的行为,但Chrome和Firefox至less可以使用。

只有IE6-8 – 有一个ActiveX解决方法这个JavaScript的本地文件问题:

  function OpenImage(filePath) { var myshell = new ActiveXObject("WScript.shell"); myshell.run(filePath, 1, true); } 

您可以使用

 <a href="\\computername\folder">Open folder</a> 

在Internet Explorer中

添加点击打开本地目录o本地文件到谷歌浏览器:

JFish222的解决scheme(URL文件解决scheme)

对于像Apache这样的Web服务器浏览器,只需在http.config中添加.htaccess这个代码:

SetEnvIf Request_URI“.url $”requested_url = url Header add Content-Disposition“attachment”env = requested_url

通过你的url文件的第一个下载点击chromes下载栏中的文件,并select“总是打开这个文件”。