Схема URI файла - File URI scheme
Эта статья нужны дополнительные цитаты для проверка.Октябрь 2012 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В схема 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-адреса файлов редко используются в веб-страница в общедоступном Интернете, поскольку они подразумевают, что файл существует на указанном хосте. В хозяин спецификатор может использоваться для извлечения файла из внешнего источника, хотя конкретный протокол извлечения файла не указан; и его использование должно привести к появлению сообщения, информирующего пользователя о том, что механизм доступа к этой машине недоступен.
Рекомендации
- ^ Схема URI "файла". Дои:10.17487 / RFC8089. RFC 8089. Получено 16 октября, 2018.
- ^ RFC 8089, Раздел 2
- ^ RFC 3986, Раздел 3.2.2
- ^ RFC 3986, Раздел 3.3
- ^ RFC 8089, Приложение E
- ^ а б Рисни, Дэйв (2006). «Файловые URI в Windows». IEBlog. Корпорация Майкрософт. Получено 2020-10-02.
- ^ Странная и печальная история URL-адресов 'file:' - Бесплатные ассоциации - Домашняя страница сайта - Блоги MSDN. Blogs.msdn.com (19 мая 2005 г.). Проверено 8 марта 2014.