这是Converting file path to URI的后续问题。
考虑:
require 'uri'
uri = URI.join('file:///', '/home/user/dir1/dir2/dir3/name.ext')
=> #<URI::Generic:0x0000000263fcc0 URL:file:/home/user/dir1/dir2/dir3/name.ext>
uri.to_s
=> "file:/home/user/dir1/dir2/dir3/name.ext"
结果不是非法的吗?不应该是"file://home/..."
,用双斜线?
答案 0 :(得分:5)
没有。 file://home/...
指的是名为“home”的主机上的文件。完整语法为file:///home/...
,其中三个斜杠,其中空主机组件指示本地主机。但是,大多数识别“文件”方案的URI解析器也只接受file:/pathname
一个斜杠;缺少双斜杠意味着跳过主机组件。