Схема URI файла - File URI scheme

В схема URI файла это Схема URI определено в RFC  8089, обычно используется для извлечения файлов с вашего собственного компьютера.

Ранее схема URI файла была указана в RFC  1630 и RFC  1738. В Инженерная группа Интернета (IETF) опубликовано RFC 8089, обновив последний RFC, добавив "синтаксис, основанный на общем синтаксисе RFC  3986 это совместимо с большинством существующих обычаев ".[1]

Формат

URI файла имеет форму

файл://хозяин/дорожка

куда хозяин это полное доменное имя системы, в которой дорожка доступен, и дорожка это иерархический путь к каталогу в форме каталог/каталог/.../имя. Если хозяин опущено, считается "localhost ", компьютер, с которого интерпретируется URL. Обратите внимание, что при опускании хоста косая черта не опускается (в то время как"файл: ///foo.txt" действует, "файл: //foo.txt"нет, хотя некоторым переводчикам удается справиться с последним).

RFC 3986 включает дополнительную информацию о лечении ".." и "." сегменты в URI.

Сколько косых черт?

  • // после файл: означает, что либо имя хоста, либо буквальный термин localhost последует,[2] хотя эта часть может быть полностью опущена или может содержать пустое имя хоста.[3]
  • Единственная косая черта между хозяин и дорожка обозначает начало части локального пути URI и должен присутствовать.[4]
  • Следовательно, действительный URI файла должен начинаться либо с Путь файла, Путь файла или же file: // имя хоста / путь.
  • Путь файла (т.е. две косые черты без имени хоста) никогда не является правильным, но часто используется.
  • Далее косые черты дорожка отдельные имена каталогов в иерархической системе каталогов и подкаталогов. В этом случае косая черта - это общий, независимый от системы способ разделения частей, и в конкретной хост-системе он может использоваться как таковой в любом имени пути (как в системах Unix).

Windows может UNC имена файлов (например, serverfolderdata.xml) могут быть представлены. Оба они описаны в [5] как «нестандартный». Первый способ (называемый здесь форматом с двумя косыми чертами) - представить имя сервера с помощью Орган власти часть URI, которая затем становится файл: //server/folder/data.xml. Второй способ (называемый здесь форматом с четырьмя косыми чертами) - представить имя сервера как часть Дорожка компонент, поэтому URI становится файл: ////server/folder/data.xml. Обе формы активно используются. Microsoft .NET (например, метод новый Ури (путь)) обычно используется форма с двумя косыми чертами; Java (например, метод новый URI (путь)) обычно используется форма с четырьмя косыми чертами. Любая форма позволяет успешно использовать наиболее распространенные операции с URI (разрешение относительных URI и разыменование для получения соединения с удаленным файлом). Однако, поскольку эти URI нестандартны, некоторые менее распространенные операции завершаются ошибкой: примером является нормализовать операция (определена в RFC 3986 и реализован на Java java.net.URI.normalize () метод), который уменьшает файл: ////server/folder/data.xml в непригодную для использования форму файл: /server/folder/data.xml.

Примеры

Unix

Вот два Unix примеры, указывающие на то же /так далее/fstab файл:

файл: // локальный / etc / fstabfile: /// etc / fstab

Windows

Вот несколько примеров, которые могут быть приняты некоторыми приложениями в системах Windows, ссылаясь на тот же локальный файл. c:ОКНАclock.avi

файл: //localhost/c$/WINDOWS/clock.avifile: /// c: /WINDOWS/clock.avi

Вот URI в понимании Windows Shell API:[6]

файл: /// c: /WINDOWS/clock.avi

Обратите внимание, что буква диска, за которой следует двоеточие и косая черта, является частью допустимого URI файла.

Реализации

Windows

В системах Microsoft Windows обычное двоеточие (:) после буквы устройства иногда заменяется вертикальной чертой (|) в URL-адресах файлов. Это отражало исходный синтаксис URL, который сделал двоеточие зарезервированным символом в части пути.

С Internet Explorer 4, URI файлов стандартизированы в Windows и должны соответствовать следующей схеме. Это относится ко всем приложениям, которые используют URLMON или SHLWAPI для синтаксического анализа, выборки или привязки к URI. Чтобы преобразовать путь в URL, используйте UrlCreateFromPath, а чтобы преобразовать URL в путь, используйте PathCreateFromUrl.[6]

Для доступа к файлу "the file.txt" можно использовать следующее.

Для сетевого расположения:

файл: //hostname/path/to/the%20file.txt

Или для локального файла имя хоста опускается, а косая черта нет (обратите внимание на третью косую черту):

файл:///c: /path/to/the%20file.txt

Это не то же самое, что указать строку «localhost» или точку «». вместо имени хоста. Строка "localhost" попытается получить доступ к файлу как UNC дорожка localhostc: путь к файлу file.txt, который не будет работать, поскольку двоеточие не допускается в имени общего ресурса. Точка "." приводит к тому, что строка передается как .c: путь к файлу file.txt, который будет работать для локальных файлов, но не для общих файлов в локальной системе. Например файл: //./sharename/path/to/the%20file.txt не будет работать, потому что это приведет к Sharename интерпретируется как часть пространства имен DOSDEVICES, а не как сетевой ресурс.

Следующий план примерно описывает требования.

  • Следует использовать двоеточие и нет заменить вертикальной полосой для Internet Explorer.
  • Для разграничения путей следует использовать косую черту.
  • Такие символы, как решетка (#) или вопросительный знак (?), Которые являются частью имени файла, должны быть закодированный в процентах.
  • Символы, которые не разрешены в URI, но разрешены в именах файлов, также должны быть закодированы в процентах. Например, любой из "{}`^ "и все управляющие символы. В приведенном выше примере пробел в имени файла кодируется как% 20.
  • Символы, которые разрешены как в URI, так и в именах файлов, НЕ должны кодироваться в процентах.
  • Нельзя использовать устаревшие кодировки ACP. (Кодовые страницы ACP задаются настройками языка DOS CHCP или панели управления Windows.)
  • Символы Юникода вне ASCII диапазон должен быть UTF-8 закодированы, и эти кодировки UTF-8 должны быть закодированы в процентах.

По возможности используйте предоставленные функции. Если вы должны создать URL-адрес программно и не можете получить доступ к SHLWAPI.dll (например, из сценария или другой среды программирования, где эквивалентные функции недоступны), приведенный выше план поможет.

Устаревшие URL

Чтобы помочь установленной базе устаревших приложений на Win32 PathCreateFromUrl распознает определенные URL-адреса, которые не соответствуют этим критериям, и обрабатывает их единообразно. Они называются "устаревшими" URL-адресами файлов, а не "здоровыми" URL-адресами файлов.[7]

В прошлом многие другие приложения использовали другие системы. Некоторые добавили еще две косые черты. Например, путь UNC remotehostsharedirfile.txt станет файл: ////remotehost/share/dir/file.txt вместо "здорового" файл: //remotehost/share/dir/file.txt.

веб-страница

URL-адреса файлов редко используются в веб-страница в общедоступном Интернете, поскольку они подразумевают, что файл существует на указанном хосте. В хозяин спецификатор может использоваться для извлечения файла из внешнего источника, хотя конкретный протокол извлечения файла не указан; и его использование должно привести к появлению сообщения, информирующего пользователя о том, что механизм доступа к этой машине недоступен.

Рекомендации

  1. ^ Схема URI "файла". Дои:10.17487 / RFC8089. RFC 8089. Получено 16 октября, 2018.
  2. ^ RFC 8089, Раздел 2
  3. ^ RFC 3986, Раздел 3.2.2
  4. ^ RFC 3986, Раздел 3.3
  5. ^ RFC 8089, Приложение E
  6. ^ а б Рисни, Дэйв (2006). «Файловые URI в Windows». IEBlog. Корпорация Майкрософт. Получено 2020-10-02.
  7. ^ Странная и печальная история URL-адресов 'file:' - Бесплатные ассоциации - Домашняя страница сайта - Блоги MSDN. Blogs.msdn.com (19 мая 2005 г.). Проверено 8 марта 2014.

внешняя ссылка