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:/etc
是file://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,请考虑编写一个桌面应用程序。
#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
评论
谢谢乔纳森。您知道是否有一种方法可以“显示文件夹中的文件”吗?
–布赖恩·菲茨帕特里克(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