55

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

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

这行得通。但是(由于太长的原因无法进入)我正在尝试使用 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来指定呢?

4

5 回答 5

73

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

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

于 2012-10-03T15:33:10.227 回答
3

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

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

我怀疑第一个文件实际上是使用 apache 服务器加载的,而只是通过打开文件?href="2ndFile.html" 之所以有效,是因为它使用“相对 url”。这使得浏览器使用与他获取第一个(当前)文件的位置相同的协议和路径。

于 2012-10-03T15:31:11.233 回答
3

"file://" url 协议只能用于在本地机器的文件系统中定位文件。由于此 html 代码由浏览器解释,因此“本地机器”是运行浏览器的机器。

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

于 2016-12-07T18:47:56.443 回答
0

对于 apache 查找 SymLink 或者您可以通过带有符号链接的操作系统或在 linux 上设置库链接/等来解决

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

所以我的方法涉及将网络驱动器映射到 U:/(例如,我使用 G:/ 表示 Google Drive)

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

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>在你的问题中使用like


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

相关2:我http://localhost/c$之前也曾在一些 WAMP/apache 服务器上使用过 etc,您可以.htaccess用于控制/安全,但我建议不要在实时/生产机器上这样做——或者您可以谷歌的任何其他符号链接 documentroot 示例

于 2020-10-29T04:28:18.163 回答
0

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

于 2018-05-15T05:48:39.160 回答