Jump to content

Схема URI файла

В программировании схема универсального идентификатора ресурса файла (URI) представляет собой особый формат URI , используемый для конкретной идентификации файла на главном компьютере. Хотя URI можно использовать для идентификации чего угодно, существует особый синтаксис, связанный с идентификацией файлов. [1] [2]

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

file://host/path

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

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

Количество символов косой черты

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

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

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

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

Среда KDE использует URI без поля полномочий:

file:/etc/fstab

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

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

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

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

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

Реализации

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

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

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

Чтобы получить доступ к файлу «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.)
  • Символы Юникода за пределами диапазона ASCII должны иметь кодировку UTF-8 , а эти кодировки UTF-8 должны быть закодированы в процентах.

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

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

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

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


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

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

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

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

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


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b21ef0172399e32018c033d05e75cf64__1721572500
URL1:https://arc.ask3.ru/arc/aa/b2/64/b21ef0172399e32018c033d05e75cf64.html
Заголовок, (Title) документа по адресу, URL1:
File URI scheme - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)