如何使用file:scheme在html中指定本地文件?

时间:2012-10-03 15:18:33

标签: html url

我正在加载一个托管在Apache服务器内置的OS X上的html文件,在该文件中我将链接到同一目录中的另一个html文件,如下所示:

<a href="2ndFile.html"><button type="submit">Local file</button>

这很有效。但是(由于原因太长而无法进入)我正在尝试使用file:scheme,但是我无法得到任何工作。以下是我使用file重写上述行的方法:

<a href="file://192.168.1.57/~User/2ndFile.html"><button type="submit">Local file</button>

(192.168.1.57是我目前的IP地址)

将其更改为以下内容也不起作用:

<a href="file://Name-Of-MacBookPro/~User/2ndFile.html"><button type="submit">Local file</button>

但无法找到该文件,应该如何使用file:scheme?

指定

5 个答案:

答案 0 :(得分:43)

file: URL方案是指客户端计算机上的文件。 file:方案中没有主机名;你只需提供文件的路径。因此,本地计算机上的文件将为file:///~User/2ndFile.html。注意三个斜杠; URL的主机名部分为空,因此路径开头的斜杠紧跟URL开头的双斜杠。您还需要扩展用户的路径; ~file:网址中不会展开file:///home/User/2ndFile.html。因此,您需要file:///Users/User/2ndFile.html(在大多数Unix上),file:///C:/Users/User/2ndFile.html(在Mac OS X上)或file:(在Windows上)。

出于安全原因,许多浏览器不允许从从服务器加载的文件链接到本地​​文件。因此,您可能无法通过HTTP加载的页面执行此操作;您可能只能链接到其他本地网页的{{1}}网址。

答案 1 :(得分:2)

'file'协议不是网络协议。因此file://192.168.1.57/~User/2ndFile.html根本没有多大意义。

问题是如何加载第一个文件。这真的是使用Web服务器完成的吗?真的听起来不像。如果是,那么为什么不使用相同的协议,很可能是http?您不能指望简单地切换协议并以相同的方式使用两种不同的协议......

我怀疑第一个文件是否真的是使用apache服务器加载的,只是打开文件? href =“2ndFile.html”只是起作用,因为它使用了“相对网址”。这使得浏览器使用与获取第一个(当前)文件的协议和路径相同的路径。

答案 2 :(得分:1)

“file://”url协议只能用于查找本地计算机文件系统中的文件。由于这个html代码是由浏览器解释的,因此“本地机器”是运行浏览器的机器。

如果您收到文件未找到错误,我怀疑是因为找不到该文件。但是,它也可能是浏览器的安全限制。某些浏览器不允许您从非文件系统html页面引用文件系统文件。您可以尝试使用运行浏览器的计算机上命令行的文件路径来确认这是浏览器限制而不是合法的丢失文件。

答案 3 :(得分:0)

之前我有过类似的问题,在我的情况下,文件在另一台机器上 所以我已将网络驱动器z映射到我的文件所在的文件夹位置 然后我在tomcat中创建了一个上下文 所以在我的web项目中,我可以通过上下文访问HTML文件

答案 4 :(得分:0)

对于Apache,请查找SymLink,或者您可以通过带有符号链接的OS或在Linux上设置库链接/等来解决

我的答案是专门针对Windows 10的一种方法。

因此,我的方法涉及将网络驱动器映射到U:/(例如,我将G:/用于Google云端硬盘)

打开cmd并输入hostname(示例结果:LAPTOP-G666P000,您可以改用IP,但是如果网络停止,使用静态主机名来识别自己会更有意义)< / p>

Windows_key + E> right click 'This PC'>按N (它是“地图网络”驱动器,不添加网络位置)

如果右键单击桌面上的快捷方式,则需要按N,然后输入

填写U:G:Z:或您想要的任何内容 地址示例:\\LAPTOP-G666P000\c$\Users\username\

然后,您可以像在问题中一样使用<a href="file:///u:/2ndFile.html"><button type="submit">Local file</button>


相关:您还可以将这种方法用于FTP,并为同一网络上的不同相对路径设置多个驱动器。

related2:之前我也曾在某些WAMP / apache服务器上使用过http://localhost/c$等,您可以使用.htaccess进行控制/安全,但是我建议不要在现场/生产机器上使用- -或您可以在Google上搜索的任何其他symlink documentroot示例