javascript - 从链接打开本地文件夹

标签 javascript html

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

我尝试了很多选择,比如

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

最佳答案

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

以下内容适用于所有浏览器,但一如既往有一些注意事项。

背景:

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

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

URL 快捷方式有两种形式:

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

    [InternetShortcut]
    URL=file:///D:/

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

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


概述/回顾:

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

解决方案:

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

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

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


解决方案详细信息 (.URL):

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

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

    File name Extension= .url
    MIME type: application/internet-shortcut

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

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

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

    文件内容:

    [InternetShortcut]
    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 has the preferred behavior, but Chrome and Firefox are at least serviceable.

关于javascript - 从链接打开本地文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5246292/

相关文章:

javascript - 与 Iframe Angular 交互后的 Chrome 后退按钮问题

java - 为什么我的 CSS 在 Java 中不能正常工作?

javascript - 向php请求信息

javascript - React Native 中显示 Activity 指示器时如何锁定所有屏幕的触摸?

javascript - 在Javascript中, 'Object.create'和 'new'的区别

javascript - 我的函数声明中哪一个更好?生成器还是异步/等待?

html - png图片透明空间覆盖下面的 anchor 吗?

python - 正则表达式未按预期运行

html - 如何在最小化的同时保持视频的完整尺寸?

javascript - GetElementByID 问题不工作