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

时间:2013-08-15 03:51:52

标签: html anchor local-files

我想要一个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,是否还有其他方法可以整齐地链接到分散在整个硬盘中的文件?

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

5 个答案:

答案 0 :(得分:235)

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

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

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

有些浏览器,比如现代版Chrome,甚至会拒绝从http协议到文件协议,所以你最好确保在本地使用文件协议打开它,如果你想要完成这些工作的话

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

The first part of a URL是协议。协议是几个字母,然后是冒号和两个斜杠。 HTTP://FTP://是有效的协议; C:/不是,我很确定它甚至不像一个。

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

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

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

为什么有三个斜杠?

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

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

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

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

浏览器中的网站无法与您的操作系统进行良好的互动。如果一个好的网站可以告诉您的计算机在 VLC.exe 中打开 lecture.mp4 ,恶意网站可能会告诉它打开 virus.bat CMD.exe 中。或者它可以告诉您的计算机运行一些 Uninstall.exe 文件或打开文件浏览器一百万次。

这可能对您不方便,但HTML和浏览器安全性并非真正针对您正在进行的操作而设计。如果您希望能够在 VLC.exe 中打开 lecture.mp4 ,请考虑编写桌面应用程序。

答案 1 :(得分:12)

如果您在PC上运行IIS,则可以将您尝试访问的目录添加为虚拟目录。 要执行此操作,请右键单击ISS中的站点,然后按&#34;添加虚拟目录&#34;。 命名虚拟文件夹。将虚拟文件夹指向本地PC上的文件夹位置。 您还必须提供具有访问特定文件夹的权限的凭据,例如。 HOSTNAME \用户名和密码。 之后,您可以像访问您网站上的任何其他文件一样访问虚拟文件夹中的文件。

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

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

希望这有助于某人:)

答案 2 :(得分:6)

Janky充其量

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

然后右键单击,选择&#34;复制位置&#34;选项,然后粘贴到网址。

答案 3 :(得分:0)

我有办法和这样的工作:

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

答案 4 :(得分:0)

回到2017年:

使用URL.createObjectURL( file )创建用户选择的文件系统的本地链接;

不要忘记使用URL.revokeObjectURL()

释放内存