схема URI файла - file URI scheme

редактировать

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

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

Содержание
  • 1 Формат
  • 2 Сколько слэшей?
  • 3 Примеры
    • 3.1 Unix
    • 3.2 Windows
  • 4 Реализации
    • 4.1 Windows
      • 4.1.1 Устаревшие URL-адреса
    • 4.2 Веб-страницы
  • 5 Ссылки
  • 6 Внешние ссылки
Формат

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

file: // host / path

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

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

Сколько косых черт?
  • // после файла: означает, что за ним следует имя хоста или буквальный термин localhost, хотя эта часть может быть полностью опущена или может содержать пустое имя хоста.
  • Одиночная косая черта между host и path обозначает начало части URI локального пути и должна присутствовать.
  • Следовательно, действительный URI файла должен начинаться с либо файл: / путь, файл: /// путьили файл: // имя хоста / путь.
  • файл: // путь(т.е. две косые черты, без имени хоста) никогда не является правильным, но часто используется.
  • Дополнительные косые черты в пути разделяют имена каталогов в иерархической системе каталогов и подкаталогов. В этом случае косая черта - это общий, независимый от системы способ разделения частей, и в конкретной хост-системе он может использоваться как таковой в любом имени пути (как в системах Unix).

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

Примеры

Unix

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

file: // localhost / etc / fstab file: // / etc / fstab

Windows

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

file: //localhost/c$/WINDOWS/clock.avi file: /// c: /WINDOWS/clock.avi

Вот URI, понятный API оболочки Windows:

file: /// c: /WINDOWS/clock.avi

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

Реализации

Windows

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

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

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

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

file: //hostname/path/to/the%20file.txt

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

file: // / c: /path/to/the%20file.txt

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

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

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

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

Устаревшие URL-адреса

Для поддержки установленной базы унаследованных приложений в Win32 PathCreateFromUrlраспознает определенные URL-адреса, которые не соответствуют этим критериям, и обрабатывает их единообразно. Они называются «устаревшими» URL-адресами файлов, а не «исправными» URL-адресами файлов.

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

Веб-страницы

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

Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-20 03:41:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте