Schéma URI souboru - File URI scheme
![]() | tento článek potřebuje další citace pro ověření.Říjen 2012) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
The schéma URI souboru je Schéma URI definováno v RFC 8089, obvykle se používá k načítání souborů z vlastního počítače.
Dříve bylo schéma souboru URI specifikováno v RFC 1630 a RFC 1738. The Pracovní skupina pro internetové inženýrství (IETF) zveřejněna RFC 8089, aktualizace druhého RFC, s "syntaxí založenou na obecné syntaxi RFC 3986 který je kompatibilní s většinou stávajících zvyklostí. “[1]
Formát
URI souboru má formu
soubor://hostitel/cesta
kde hostitel je plně kvalifikovaný název domény systému, na kterém cesta je přístupný a cesta je hierarchická cesta k adresáři formuláře adresář/adresář/.../název. Li hostitel je vynechán, je považován za "localhost ", stroj, ze kterého je URL interpretována. Všimněte si, že při vynechání hostitele není vynecháno lomítko (while"soubor: ///foo.txt" je platný, "soubor: //foo.txt„není, ačkoli se některým tlumočníkům podaří toto zvládnout).
RFC 3986 obsahuje další informace o léčbě „..“ a „.“ segmenty v URI.
Kolik lomítek?
- // za soubor: označuje, že buď název hostitele, nebo doslovný výraz
localhost
bude následovat,[2] i když tato část může být zcela vynechána, nebo může obsahovat prázdné jméno hostitele.[3] - Jediné lomítko mezi hostitel a cesta označuje začátek části místní cesty URI a musí být přítomen.[4]
- Platný identifikátor URI souboru proto musí začínat buď
soubor: / cesta
,file: /// cesta
nebofile: // hostname / path
. file: // cesta
(tj. dvě lomítka, bez názvu hostitele) není nikdy správný, ale často se používá.- Další sekání dovnitř cesta oddělené názvy adresářů v hierarchickém systému adresářů a podadresářů. V tomto použití je lomítko obecným, na systému nezávislým způsobem oddělení částí a v konkrétním hostitelském systému může být použit jako takový v libovolném názvu cesty (jako v systémech Unix).
Windows existují dvěma způsoby UNC názvy souborů (např serverfolderdata.xml
). Oba jsou popsány v [5] jako „nestandardní“. První způsob (zde nazývaný 2-lomítko formát) je reprezentovat název serveru pomocí Úřad část URI, která se pak stává soubor: //server/folder/data.xml
. Druhým způsobem (nazývaným zde formát 4 lomítek) je reprezentovat název serveru jako součást Cesta komponenta, takže se stane URI file: ////server/folder/data.xml
. Aktivně se používají obě formy. Microsoft .NET (například metoda nový Uri (cesta)
) obecně používá 2-lomítko; Java (například metoda nový URI (cesta)
) obecně používá 4-lomítko. Každá forma umožňuje úspěšné použití nejběžnějších operací na URI (řešení relativních URI a dereferencování k získání připojení ke vzdálenému souboru). Protože však tyto identifikátory URI nejsou standardní, některé méně běžné operace selžou: příkladem je normalizovat operace (definována v RFC 3986 a implementováno v Javě java.net.URI.normalize ()
metoda), která snižuje file: ////server/folder/data.xml
do nepoužitelné formy soubor: /server/folder/data.xml
.
Příklady
Unix
Tady jsou dva Unix příklady ukazující na stejné /atd/fstab soubor:
file: // localhost / etc / fstabfile: /// etc / fstab
Okna
Zde je několik příkladů, které mohou některé aplikace v systémech Windows přijmout a které odkazují na stejný místní soubor C:OKNAhodiny.avi
soubor: //localhost/c$/WINDOWS/clock.avifile: /// c: /WINDOWS/clock.avi
Zde je identifikátor URI, jak jej chápe rozhraní Windows Shell API:[6]
soubor: /// c: /WINDOWS/clock.avi
Všimněte si, že písmeno jednotky následované dvojtečkou a lomítkem je součástí přijatelného URI souboru.
Implementace
Okna
V systémech Microsoft Windows je normální dvojtečka (:) za písmenem zařízení někdy nahrazena svislou čárkou (|) v adresách URL souborů. To odráželo původní syntaxi adresy URL, díky níž byl dvojtečka vyhrazeným znakem v části cesty.
Od té doby Internet Explorer 4, URI souboru byly standardizovány v systému Windows a měly by se řídit následujícím schématem. To platí pro všechny aplikace, které používají URLMON nebo SHLWAPI pro analýzu, načítání nebo vazbu na URI. Chcete-li převést cestu na adresu URL, použijte UrlCreateFromPath
a pro převod adresy URL na cestu použijte PathCreateFromUrl
.[6]
Pro přístup k souboru „file.txt“ lze použít následující.
Pro síťové umístění:
file: //hostname/path/to/the%20file.txt
Nebo pro místní soubor je název hostitele vynechán, ale lomítko není (všimněte si třetího lomítka):
soubor:///c: /path/to/the%20file.txt
To není totéž jako poskytnutí řetězce „localhost“ nebo tečky „.“ místo názvu hostitele. Řetězec "localhost" se pokusí o přístup k souboru jako UNC cesta localhostc: cesta k souboru.txt
, což nebude fungovat, protože dvojtečka není ve jménu sdílené položky povolena. Tečka "." má za následek předání řetězce jako .c: cesta k souboru.txt
, který bude fungovat pro místní soubory, ale nebude sdílet v místním systému. Například file: //./sharename/path/to/the%20file.txt
nebude fungovat, protože to bude mít za následek sdílené jméno interpretován jako součást oboru názvů DOSDEVICES, nikoli jako sdílená síť.
Následující obrys zhruba popisuje požadavky.
- Dvojtečka by měla být použita a měla by být ne být nahrazen svislou čarou pro Internet Explorer.
- K ohraničení cest by měla být použita lomítka.
- Znaky jako hash (#) nebo otazník (?), Které jsou součástí názvu souboru, by měly být zakódováno v procentech.
- Znaky, které nejsou povoleny v URI, ale které jsou povoleny v názvech souborů, musí být také procentně zakódovány. Například některý z „{}`^ "a všechny řídicí znaky. Ve výše uvedeném příkladu je mezera v názvu souboru zakódována jako% 20.
- Znaky, které jsou povoleny v URI i v názvech souborů, NESMÍ být kódovány procentem.
- Nesmíte používat starší kódování ACP. (Kódové stránky ACP jsou specifikovány nastavením jazyka DOS CHCP nebo Windows Control Panel.)
- Znaky Unicode mimo ASCII rozsah musí být UTF-8 kódované a tato kódování UTF-8 musí být kódována procentem.
Pokud je to možné, použijte poskytované funkce. Pokud musíte programově vytvořit adresu URL a nemáte přístup k souboru SHLWAPI.dll (například ze skriptu nebo z jiného programovacího prostředí, kde nejsou k dispozici ekvivalentní funkce), výše uvedená osnova vám pomůže.
Starší adresy URL
Pomáhat nainstalované základně starších aplikací na Win32 PathCreateFromUrl
rozpozná určité adresy URL, které tato kritéria nesplňují, a zachází s nimi jednotně. Říká se jim „starší“ adresy URL souborů na rozdíl od „zdravých“ adres URL souborů.[7]
V minulosti mnoho jiných aplikací používalo jiné systémy. Někteří přidali další dvě lomítka. Například cesta UNC remotehostsharedirfile.txt
stal by se soubor: ////remotehost/share/dir/file.txt
místo „zdravého“ soubor: //remotehost/share/dir/file.txt
.
webové stránky
Adresy URL souborů se používají jen zřídka webové stránky na veřejném internetu, protože znamenají, že na určeném hostiteli existuje soubor. The hostitel specifikátor lze použít k načtení souboru z externího zdroje, ačkoli není specifikován žádný specifický protokol načítání souborů; a jeho použití by mělo vyústit ve zprávu, která informuje uživatele, že není k dispozici žádný mechanismus pro přístup k tomuto stroji.
Reference
- ^ Schéma URI „souboru“. doi:10.17487 / RFC8089. RFC 8089. Citováno 16. října 2018.
- ^ RFC 8089, Sekce 2
- ^ RFC 3986, Oddíl 3.2.2
- ^ RFC 3986, Oddíl 3.3
- ^ RFC 8089, Dodatek E.
- ^ A b Risney, Dave (2006). "URI souboru ve Windows". IEBlog. společnost Microsoft. Citováno 2020-10-02.
- ^ Bizarní a nešťastný příběh souboru „URL:“ URL - Asociace zdarma - Domovská stránka webu - Blogy MSDN. Blogs.msdn.com (2005-05-19). Citováno 2014-03-08.