【问题标题】:Open local folder from link从链接打开本地文件夹
【发布时间】:2020-09-25 21:51:59
【问题描述】:

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

我尝试了很多选项,例如

<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>

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    解决方案:启动可下载链接

    以下内容适用于所有浏览器,但仍需注意。

    背景:

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

    如果您需要以下解决方案的 linux 支持,请参阅article
    * 我与这篇文章没有任何关系,YMMV。

    网址快捷方式有两种形式:

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

      [互联网快捷方式]
      URL=file:///D:/

    2. 带有 .LNK 扩展名的文件是二进制文件。它们可以动态生成,但需要 iShelLinkInterface 实现者。这在默认操作系统限制下很复杂,这理所当然地阻止了 IIS 进程到达 Shell。

    .URL 是推荐的解决方案,因为动态生成跨 Web 语言/框架是可行的,并且允许 KISS 实现。


    概述/回顾:

    1. 安全限制不允许您直接从页面打开路径/启动资源管理器(如 @Pekka 所述)。
    2. 外部托管的站点(不在您的本地计算机上)将不允许 file:///... uri 在默认安全权限下。

    解决方案:

    提供资源的可下载链接(.URL 或 .LNK)。浏览器行为将在文章末尾解释。

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

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


    解决方案详情 (.URL):

    1. 将 .url 添加到 Web 服务器中可用的 MIME 类型。

      对于 IIS 打开站点,选择 MIME 类型,然后添加以下内容:

      文件扩展名= .url
      MIME 类型:应用程序/互联网快捷方式

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

      SetEnvIf Request_URI ".url$" requested_url=url 标头添加 Content-Disposition "attachment" env=requested_url

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

      文件内容:

      [互联网快捷方式]
      URL=file:///D:

    3. 提供指向生成 .url 文件的脚本或文件本身的链接。

      如果您只是将 .url 文件上传到您的服务器,请将以下内容添加到您的 HTML:

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


    浏览器相关行为

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

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

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

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

    【讨论】:

    • 使用 [InternetShortcut] 选项应注意,一旦它为您提供下载或保存的选项,您的浏览器将无法判断您已经拥有该文件,并且它会在您的temp 目录,因此请注意不要对大文件执行此操作。
    • @MrLore 是正确的。理想情况下,不应保留快捷方式(也就是说,最终用户应该不知道需要删除下载的链接。)我知道完成此操作的唯一方法是通过 IE 保存到 IETemp 并允许用户选择打开的行为/run 下载(相对于保存)。如果我再次访问此内容并能够提出更好的建议,我会回帖。
    • 我只是偶然发现了这个解决方案,但我发现我的浏览器只是打开 .url 文件并显示其文本。我在本地使用 XAMPP。我是否需要以某种方式告诉 XAMPP 以不同的方式解释这些 .url 文件?
    • 嗨@Utkanos,这可能是Apache 编码/发送文件的方式或浏览器的文件关联。您是否尝试过 cremax 的 Apache 配置说明? PS:使用@符号+姓名,此人将收到您的消息通知。
    • 这对我有用,"SetEnvIf Request_URI ".url$" requested_url=url Header add Content-Disposition "attachment" env=requested_url" 是我让它在 Chrome 中工作所需要的。跨度>
    【解决方案2】:

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

    对于Firefox

    出于安全考虑,Mozilla 应用程序会阻止远程文件到本地文件(和目录)的链接。这包括链接到硬盘驱动器、映射的网络驱动器上的文件,并可通过统一命名约定 (UNC) 路径访问。这可以防止许多不愉快的可能性,包括:

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

    对于IE

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

    对于Opera(在安全公告的上下文中,我确信有一个更规范的链接):

    作为安全预防措施,Opera 不允许网页链接到用户本地磁盘上的文件

    【讨论】:

    • 但是我可以通过 URL 中的“file:///D:/Tools/”浏览 Mozilla 和 IE 中的本地文件和目录。我使用 Mozilla 3.6 和 IE 8。如果我对锚标签使用相同的 URL,它不会打开文件和文件夹
    • @Satya 是的,这正是安全机制的工作方式——防止来自远程站点的恶意链接
    • @Odelya 我不知道确切的来源,但根据经验,Chrome 对本地资源的处理与 Firefox 一样严格。
    【解决方案3】:

    仅 IE6-8 - 在 JavaScript 中有一个 ActiveX 解决此本地文件问题的方法:

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

    【讨论】:

    • -1:如果 ActiveX 被禁用(大多数情况下是这样),则无法正常工作。
    • @JohnSaunders:我已经看到在许多 Intranet Web 应用程序中实现了此功能,并为特定网站(如 [http://coName-net])适当配置了 Local-Intranet
    【解决方案4】:

    你可以使用

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

    在 Internet Explorer 中

    【讨论】:

      【解决方案5】:

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

      来自 JFish222 的解决方案有效(URL 文件解决方案)

      对于像 Apache 服务器上的 Chrome 这样的 Webkid 浏览器,只需将以下代码添加到 .htaccess 或 http.config:

      SetEnvIf Request_URI ".url$" requested_url=url 标头添加 Content-Disposition "attachment" env=requested_url

      第一次下载您的 url 文件时,单击 chromes 下载栏中的文件并选择“始终打开此文件”。

      【讨论】:

        【解决方案6】:

        本地资源管理器 - Web 浏览器扩展上的文件管理器可以解决 chrome

        但仍有一些编码问题

        【讨论】:

        • 这个问题特别关注使用JavaScript和HTML打开本地文件夹,而不是使用扩展。
        【解决方案7】:

        URL 指定要嵌入 iframe 的文档的 URL。 可能的值:

        绝对 URL - 指向另一个网站(如 src="http://www.example.com/default.htm") 相对 URL - 指向网站内的文件(如 src="default.htm")

        【讨论】:

          猜你喜欢
          • 2016-07-13
          • 2012-09-25
          • 1970-01-01
          • 1970-01-01
          • 2018-09-05
          • 2014-10-14
          • 1970-01-01
          • 1970-01-01
          • 2014-10-04
          相关资源
          最近更新 更多