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

我想有一个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> 

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

一些浏览器,如现代版本的Chrome,甚至会拒绝从http协议转换到文件协议,所以如果你想完成这个任务,最好确保你使用文件协议在本地打开它。

为什么没有file:///

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

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

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

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

为什么三个斜线?

因为它是File URI方案的一部分。 您可以选择在前两个斜线之后指定主机。 如果你跳过指定一个主机,它会假设你指的是你自己的PC上的一个文件。 换句话说: file:///C:/etcfile://localhost/C:/etc的快捷方式。

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

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

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

浏览器中的网站无法很好地与您的操作系统进行交互。 如果一个好的网站可以告诉lecture.mp4VLC.exe中打开,恶意网站可以告诉它打开CMD.exe中的virus.bat 。 或者它可以告诉你的电脑运行一些Uninstall.exe文件,或者打开文件浏览器一百万次。

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

如果您正在PC上运行IIS,则可以将您尝试访问的目录添加为虚拟目录。 要做到这一点,你右键单击您的网站在ISS,然后按“添加虚拟目录”。 命名虚拟文件夹。 将虚拟文件夹指向本地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年:

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

不要忘记通过使用URL.revokeObjectURL()释放内存