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

我想有一个 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,有没有其他方法来整齐地链接到分散在硬盘驱动器中的文件?

我的电脑运行 Windows7,我的网页浏览器是 Chrome。

845290 次浏览

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

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

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

不能从 http 跨越到文件协议

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

这意味着一个网站上的网页将永远无法链接到您的硬盘驱动器上的文件。如果你想做这些事情,你需要使用文件协议在本地打开你的网页。

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

URL 的第一部分是协议。协议是几个字母,然后是冒号和两个斜杠。HTTP://FTP://是有效的协议,而 C:/不是,我很确定它甚至不完全相似。

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

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

因此,如果您想访问本地文件: 告诉它使用文件协议。

为什么是三道?

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

这些文件仍然会在浏览器中打开,这很好

你的浏览器对这些文件的响应方式与它们对互联网上任何地方的相同文件的响应方式相同。这些文件在默认的文件处理程序中打开(例如 MS Word 或者 VLC media player) ,你可以让文件浏览器打开文件的位置。

这对你们的安全是一件非常好的事情。

浏览器中的站点无法与操作系统很好地交互。如果一个好的站点可以告诉您的机器在 VLCexe中打开 讲座 mp4,那么恶意站点可以告诉它在 CMD.exe中打开 病毒,蝙蝠。或者它可以只告诉您的机器运行一些 卸载 exe文件或打开文件资源管理器一百万次。

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

如果您正在您的电脑上运行 IIS,您可以添加您试图达到的目录作为虚拟目录。 要做到这一点,您右键单击您的网站在国际空间站,并按“添加虚拟目录”。 命名虚拟文件夹。将虚拟文件夹指向本地 PC 上的文件夹位置。 您还必须提供具有访问特定文件夹权限的凭据,如 HOSTNAME 用户名和密码。 之后,您可以像访问站点上的任何其他文件一样访问虚拟文件夹中的文件。

Http://sitename.com/virtual_folder_name/filename.fileextension

顺便说一下,这也适用于不接受文件协议文件的 Chrome://

希望这对某些人有所帮助:)

最多叫 Janky

<a href="file://///server/folders/x/x/filename.ext">right click </a></td>

然后右键单击,选择“复制位置”选项,然后粘贴到网址。

我有一个办法,这样工作:

<'a href="FOLDER_PATH" target="_explorer.exe">Link Text<'/a>

返回2017年:

使用 CreateObjectURL (文件)创建本地链接到用户选择的文件系统;

不要忘记使用 ()释放内存