4

これは、ファイルパスを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/..."二重スラッシュで、そうではありませんか?

4

1 に答える 1

5

No. file://home/...は、「home」という名前のホスト上のファイルを指します。完全な構文はfile:///home/...3 つのスラッシュを含む です。ここで、空のホスト コンポーネントはローカル ホストを示します。ただし、「ファイル」スキームを認識するほとんどの URI パーサーは、file:/pathname1 つのスラッシュのみも受け入れます。二重スラッシュがないということは、ホスト コンポーネントがスキップされることを意味します。

于 2012-05-13T13:07:40.533 に答える