我在Intranet中使用<a href="file:...">
链接进行本地文件夹访问。
困扰我的是我必须在这些URI中编写的斜杠数量,以实现跨浏览器兼容性。
Internet Explorer 11.904.16299.0
file://server/share/path/to/file ok
file:///server/share/path/to/file KO
file:////server/share/path/to/file ok
file://///server/share/path/to/file ok
Edge 41.16299.820.0
file://server/share/path/to/file ok
file:///server/share/path/to/file KO
file:////server/share/path/to/file ok
file://///server/share/path/to/file ok
Firefox 60.0 with Local Filesystem Links Extension
file://server/share/path/to/file KO
file:///server/share/path/to/file KO
file:////server/share/path/to/file KO
file://///server/share/path/to/file ok
当我在Stack Overflow或类似内容中寻找答案时,我最终会在这些帖子中说,正确的数量是3个斜杠。
我写这个问题并回答它,以防有人像我一样感到困惑。
区分两种类型的<a href="file:...>"
链接非常重要:本地路径和UNC路径。
本地路径URI
这是在客户端计算机内可访问的文件的路径,因为该文件位于其本地存储内,或者因为它可通过映射的驱动器/装入文件夹访问。
那些URI需要3个斜杠:
file:///p:/share/path/to/file
file:////mnt/share/path/to/file
第二个例子的第四个斜杠是UNIX root /
。
他们的道路
我在问题中展示的格式file://///server/share/path/to/file
被称为UNC路径。
这是一个可以通过内部URI从客户端计算机访问的路径,如my.server.com
。例如,在Windows中,这是使用服务器URI访问文件而不是其映射的驱动器号。
那些URI需要5个斜杠:
file://///my.server.com/share/path/to/file
帮助我回答我的问题的链接:
Firefox Local Filesystem Links Extension的“about”部分也讨论了它: