我想要一个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中打开。

我的问题是:


是否可以调整我的HTML以将链接视为文件的快捷方式?
如果没有办法调整HTML,还有其他方法可以整齐地链接到分散在整个硬盘驱动器中的文件吗?

我的计算机运行Windows 7,而我的网络浏览器是Chrome。

#1 楼

如果要链接到本地​​文件,则需要使用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://FTP://是有效协议; C:/不是,而且我很确定它甚至与之不太相似。
C:/也不是有效的网址。浏览器可能会假设它是http://c/,并且指定了空白端口,但这会失败。
您的浏览器可能不会假设它在引用本地文件。几乎没有理由做这个假设,因为网页通常不尝试链接到人们的本地文件。
因此,如果要访问本地文件,请告诉它使用文件协议。
为什么三个正斜杠?
,因为它是文件URI方案的一部分。您可以选择在前两个斜杠后指定主机。如果您跳过指定主机,它将仅假设您引用的是您自己PC上的文件。这意味着file:///C:/etcfile://localhost/C:/etc的快捷方式。
这些文件仍将在浏览器中打开,这很好。
您的浏览器将对这些文件的响应与对Internet上任何地方的相同文件的响应相同。这些文件将不会在默认文件处理程序(例如MS Word或VLC Media Player)中打开,并且您将无法执行诸如要求File Explorer打开文件位置之类的操作。
对于您的安全性。
浏览器中的站点无法很好地与操作系统交互。如果一个好的站点可以告诉您的计算机打开VLC.exe中的tutorial.mp4,则一个恶意站点可能会告诉它打开CMD.exe中的virus.bat。或者它可能只是告诉您的计算机运行一些Uninstall.exe文件或打开文件浏览器一百万次。
这可能对您不方便,但是HTML和浏览器安全性并不是真正针对您的目的而设计的在做。如果您希望能够在VLC.exe中打开tutorial.mp4,请考虑编写一个桌面应用程序。

评论


谢谢乔纳森。您知道是否有一种方法可以“显示文件夹中的文件”吗?

–布赖恩·菲茨帕特里克(Brian Fitzpatrick)
13年8月15日在4:38

@Brian您的浏览器无法以这种方式与您的操作系统进行交互,因此您应该感到非常高兴,因为它不能。

–doppelgreener
2013年8月15日4:45



好像Chrome仍然不会使用file:///协议下载本地文件(给您一个“不允许加载本地资源错误”)

–Loupax
2014年3月24日16:09

我想给出一个像这样的链接“ file:/// .. \ .. \ sort.mw”,以便它返回两个文件夹并在那里保存文件。因为我们在Dropbox中使用Word文件。有什么解决办法吗?

– Murtaza Munshi
15年10月28日在9:55

还可能值得一提的是,您无法从网站(例如本地开发服务器)链接到本地​​文件。 forums.mozillazine.org/viewtopic.php?f=9&t=1730

– nuala
16-2-20在23:30

#2 楼

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

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

顺便说一句,这也适用于Chrome,否则它不接受文件协议文件://:// br << /> />希望对别人有帮助:)

评论


感谢您的回答!我已经将file:///放在文件的路径之前,但是当我单击它时却什么也没有发生。我必须使用Ctrl(在新标签页中)打开它。为什么会这样呢?

–PiotCzyż
15年7月30日在9:30

#3 楼

最好的是


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


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

评论


我们被迫右键单击吗?是否存在一种方法,只需单击它即可?

–班多雷拉斯
19年8月8日在9:13

您是否找到一种方法,只需单击鼠标左键即可打开本地链接?

–lordparthurnaax
昨天

#4 楼

回到2017年:

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

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

评论


这里的file参数需要在浏览器客户端的JS运行时内部构造的实际文件对象,这意味着我们必须已经将其上传到浏览器客户端(例如,通过文件上传表单控件)。生成的URL是一个Blob URL,用于下载或引用浏览器客户端JS运行时内部存储器中存储的副本。这对创建到本地文件的链接没有帮助;它是指向存储在内存中的副本的链接(否则,一旦我们尝试访问它,其行为就不会有所不同)。

–doppelgreener
18年7月26日在13:31



正是我所需要的。使用文件输入来选择一个文件,然后使用createObjectURL在选项卡中将其打开。

–托尼·拉格(Tony Lugg)
5月22日22:53

#5 楼

我有这样一种工作方式:

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


评论


即使在Internet Explorer中,这看起来也不是有效的目标值。

–doppelgreener
16-10-13在11:06

IE会忽略(无效)目标(上方)。以下在IE10 11上可以正常使用:链接到驱动器C上的tmp。

–primehunter
16年9月9日在10:29

它使用IE和网络驱动器路径(例如“ file:// servername / path \ to \ folder”)代替FOLDER_PATH,对我来说效果很好。如果您省略“ target =“ _ explorer.exe””,则该文件夹将在IE中打开,而不是在explorer.exe中打开,它看起来很像explorer。

–JonP
17年4月7日在13:24