如何在本地运行的网页上创建指向本地文件的链接?

2023-11-26

我想要一个 html 文件来组织分散在我的硬盘驱动器中的某些文件。例如,我有两个要链接到的文件:

  • C:\Programs\sort.mw
  • C:\Videos\lecture.mp4

问题是我希望链接充当文件的快捷方式。我尝试过以下方法:

<a href="C:\Programs\sort.mw">Link 1</a>
<a href="C:\Videos\lecture.mp4">Link 2</a>

...但第一个链接什么也不做,第二个链接在 Chrome 中打开文件,而不是 VLC。

我的问题是:

  1. 有没有办法调整我的 HTML 以将链接视为文件的快捷方式?

  2. 如果没有办法调整 HTML,是否有其他方法可以整齐地链接到分散在硬盘驱动器中的文件?

我的电脑运行 Windows 7,网络浏览器是 Chrome。


您需要使用file:///如果您想链接到本地​​文件,请使用协议(是的,这是三个斜杠)。

<a href="file:///C:\Programs\sort.mw">Link 1</a>
<a href="file:///C:\Videos\lecture.mp4">Link 2</a>

这些永远不会自动在本地应用程序中打开文件。这是出于安全原因,我将在最后一节中介绍这一点。如果它打开,它只会在浏览器中打开。如果您的浏览器可以显示该文件,它就会显示,否则它可能会询问您是否要下载该文件。

您无法从 http(s) 跨越到文件协议

许多浏览器的现代版本(例如 Firefox 和 Chrome)将拒绝从 http(s) 协议跨越到文件协议以防止恶意行为。

这意味着某个网站上托管的网页将永远无法链接到您硬盘上的文件。如果您想执行此操作,则需要使用文件协议在本地打开网页。

为什么没有就卡住了file:///?

URL 的第一部分是协议。协议由几个字母组成,然后是一个冒号和两个斜杠。HTTP:// and FTP://是有效的协议;C:/不是,而且我很确定它根本不像。

C:/也不是有效的网址。浏览器可能会认为它应该是http://c/指定了空白端口,但这将会失败。

您的浏览器可能不会认为它指的是本地文件。没有理由做出这样的假设,因为网页通常不会尝试链接到人们的本地文件。

所以如果你想访问本地文件:告诉它使用文件协议。

为什么要三斜线?

因为它是文件 URI 方案。您可以选择在前两个斜杠后指定主机。如果您跳过指定主机,它只会假设您引用的是您自己的 PC 上的文件。这意味着file:///C:/etc是一个快捷方式file://localhost/C:/etc.

这些文件仍将在您的浏览器中打开,这很好

您的浏览器将像响应互联网上任何地方的同一文件一样响应这些文件。这些文件will not在默认文件处理程序(例如 MS Word 或 VLC 媒体播放器)中打开,然后您will not能够执行任何操作,例如要求文件资源管理器打开文件的位置。

这对于您的安全来说是一件非常好的事情。

浏览器中的站点无法与操作系统很好地交互。如果一个好的网站可以告诉你的机器打开讲座.mp4 in VLC.exe,恶意网站可能会告诉它打开病毒.bat in CMD.exe。或者它可以只是告诉你的机器运行一些卸载程序文件或打开文件资源管理器一百万次。

这对您来说可能不太方便,但 HTML 和浏览器安全性并不是真正为您正在做的事情而设计的。如果你想能够打开讲座.mp4 in VLC.exe考虑编写一个桌面应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在本地运行的网页上创建指向本地文件的链接? 的相关文章