Datei URI -Schema
Das Datei URI -Schema ist ein URI -Schema definiert in RFC 8089, normalerweise verwendet, um Dateien vom eigenen Computer abzurufen.
Zuvor wurde das Datei -URI -Schema in angegeben RFC 1630 und RFC 1738. Das Internettechnik-Arbeitsgruppe (IETF) veröffentlicht RFC 8089 mit der Aktualisierung des letzteren RFC mit "eine Syntax basierend auf der generischen Syntax von RFC 3986 Das ist mit den meisten vorhandenen Verwendungen kompatibel. "[1]
Format
Eine Datei -URI nimmt die Form von an
Datei://Gastgeber/Weg
wo Gastgeber ist der Vollqualifizierter Domainname des Systems, auf dem die Weg ist zugänglich und Weg ist ein hierarchischer Verzeichnisweg der Form Verzeichnis/Verzeichnis/.../Name. Wenn Gastgeber wird weggelassen, es wird als sein "Lokalhost", Die Maschine, aus der die URL interpretiert wird. Beachten Sie, dass der Schrägstrich beim Weglassen des Hosts nicht weggelassen wird (während", während "Datei: ///foo.txt" ist gültig, "Datei: //foo.txt"Ist es nicht, obwohl einige Dolmetscher es schaffen, letztere zu handhaben).
RFC 3986 enthält zusätzliche Informationen zur Behandlung von ".." und "." Segmente in URIS.
Wie viele Schrägstriche?
- Das // nach dem Datei: bezeichnet, dass entweder ein Hostname oder der wörtliche Begriff
Lokalhost
wird folgen,[2] Obwohl dieser Teil vollständig weggelassen werden kann oder einen leeren Hostnamen enthalten kann.[3] - Der einzelne Schrägstrich zwischen Gastgeber und Weg bezeichnet den Beginn des lokalen Pfadteils des URI und muss anwesend sein.[4]
- Eine gültige Datei -URI muss daher mit beiden beginnen
Dateipfad
(kein Hostname),Dateipfad
(leerer Hostname) oderDatei: // Hostname/Pfad
. -
Dateipfad
(d. H. Zwei Schrägstriche ohne Hostname) sind nie korrekt, wird aber oft verwendet. - Weitere Schrägstriche Weg Separate Verzeichnisnamen in einem hierarchischen System von Verzeichnissen und Unterverzeichnissen. In dieser Verwendung ist der Schrägstrich eine allgemeine, systemunabhängige Art der Trennung der Teile und kann in einem bestimmten Hostsystem als solcher in jedem Pfadnamen (wie in UNIX-Systemen) verwendet werden.
Es gibt zwei Möglichkeiten, wie Fenster Windows UNC Dateinamen (wie z. \\ server \ order \ data.xml
) kann dargestellt werden. Diese werden beide in RFC 8089, Anhang E als "nicht standardmäßig" beschrieben. Der erste Weg (hier genannt das 2-Slash-Format) besteht darin, den Servernamen mit dem darzustellen Behörde Teil des URI, der dann wird Datei: //server/folker/data.xml
. Der zweite Weg (hier genannt das 4-Slash-Format) besteht darin, den Servernamen als Teil der darzustellen Weg Komponente, so dass der URI wird Datei: ////server/folker/data.xml
. Beide Formen werden aktiv verwendet. Microsoft .net (z. B. die Methode neuer Uri (Pfad)
) verwendet im Allgemeinen die 2-Slash-Form; Java (zum Beispiel die Methode neuer Uri (Pfad)
) verwendet im Allgemeinen das 4-Slash-Formular. Bei jedem Formular können die häufigsten Vorgänge auf URIs (auflösen relativen URIs und Derference, um eine Verbindung zur Remotedatei zu erhalten) erfolgreich verwendet. Da diese URIs jedoch nicht standardmäßig sind, scheitern einige weniger verbreitete Operationen: Ein Beispiel ist das normalisieren Betrieb (definiert in RFC 3986 und in der Java implementiert java.net.uri.normalize ()
Methode), was reduziert Datei: ////server/folker/data.xml
zur unbrauchbaren Form Datei: /server/folder/data.xml
.[5]
Beispiele
Unix
Hier sind zwei Unix Beispiele, die auf das gleiche / zeigenetc/fstab Datei:
Datei: // localhost/etc/fstab Datei: /// etc/fstab
Fenster
Hier sind einige Beispiele, die von einigen Anwendungen auf Windows -Systemen akzeptiert werden können, unter Bezugnahme auf die gleiche lokale Datei c:\Fenster\clock.avi
Datei: // localhost/c: /windows/clock.avi Datei: /// c: /windows/clock.avi
Hier ist die URI, wie die Windows -Shell -API verstanden wird:[6]
Datei: /// c: /windows/clock.avi
Beachten Sie, dass der Antriebsbuchstaben, der von einem Dickdarm und einem Schrägstrich teilnahm, Teil der akzeptablen Datei -URI ist.
Implementierungen
Fenster
Auf Microsoft Windows Systems wurde der normale Colon (:) Nachdem ein Gerätebrief manchmal durch eine vertikale Balken (|) in Datei -URLs ersetzt wurde. Dies spiegelte die ursprüngliche URL -Syntax wider, die den Dickdarm in einem Pfadteil zu einem reservierten Charakter machte.
Seit Internet Explorer 4, Datei -URIs wurden unter Windows standardisiert und sollten das folgende Schema befolgen. Dies gilt für alle Anwendungen, die Urlmon oder SHLWAPI zum Parsen, Abholen oder Binden an URIs verwenden. Um einen Pfad in eine URL umzuwandeln, verwenden Sie URLCREATEFROMPATH
und um eine URL in einen Pfad umzuwandeln, verwenden Sie PathCreateFromurl
.[6]
Um auf eine Datei "Die Datei.txt" zuzugreifen, kann Folgendes verwendet werden.
Für einen Netzwerkstandort:
Datei: //hostname/path/to/the%20File.txt
Oder für eine lokale Datei wird der Hostname weggelassen, aber der Schrägstrich ist nicht (beachten Sie den dritten Schrägstrich):
Datei:///c: /path/to/the%20File.txt
Dies ist nicht dasselbe wie die String "Localhost" oder den Punkt "." Anstelle des Hostnamens. Die Zeichenfolge "localhost" wird versuchen, auf die Datei zuzugreifen als UNC Weg \\ localhost \ c: \ path \ to \ the Datei.txt
, was nicht funktionieren wird, da der Dickdarm in einem Aktiennamen nicht erlaubt ist. Der Punkt "." führt dazu, dass die Zeichenfolge als übergeben wird \\. \ c: \ path \ to \ the Datei.txt
, die für lokale Dateien funktionieren, aber nicht auf dem lokalen System weitergegeben werden. Zum Beispiel Datei: //./sharename/path/to/the%20File.txt
wird nicht funktionieren, weil es dazu führen wird ShareName als Teil des Dosdevices -Namespace interpretiert werden, nicht als Netzwerkfreigabe.
Der folgende Umriss beschreibt grob die Anforderungen.
- Der Dickdarm sollte verwendet werden und sollte nicht durch eine vertikale Balken für den Internet Explorer ersetzt werden.
- Vorwärts -Schrägstriche sollten verwendet werden, um die Pfade abzugrenzen.
- Zeichen wie Hash (#) oder Fragezeichen (?), Die Teil des Dateinamens sind prozentualcodiert.
- Charaktere, die nicht in URIs erlaubt sind, aber in Dateinamen zugelassen sind, müssen ebenfalls prozentualcodiert sein. Zum Beispiel eines von "{} `^ "Und alle Kontrollzeichen. Im obigen Beispiel ist der Speicherplatz im Dateinamen mit %20 codiert.
- Charaktere, die sowohl in URIS als auch in Dateinamen erlaubt sind, dürfen nicht prozentualcodiert sein.
- Dürfen keine Legacy ACP -Codings verwenden. (ACP -Code -Seiten werden durch DOS -CHCP oder Windows Control Panel Spracheinstellung angegeben.)
- Unicode -Zeichen außerhalb der ASCII Reichweite muss sein UTF-8 Codiert und diese UTF-8-Codierungen müssen prozentualcodiert sein.
Verwenden Sie nach Möglichkeit die bereitgestellten Funktionen. Wenn Sie programmgesteuert eine URL erstellen müssen und nicht auf SHLWAPI.DLL (zum Beispiel aus der Skript oder einer anderen Programmierumgebung zugreifen können, in der die äquivalenten Funktionen nicht verfügbar sind), hilft die obige Übersicht.
Legacy -URLs
Um die installierte Basis von Legacy -Anwendungen auf Win32 zu unterstützen PathCreateFromurl
Erkennt bestimmte URLs, die diese Kriterien nicht erfüllen, und behandelt sie einheitlich. Diese werden als "Legacy" -Datei -URLs bezeichnet, im Gegensatz zu "gesunden" Datei -URLs.[7]
In der Vergangenheit haben verschiedene andere Anwendungen andere Systeme verwendet. Einige fügten zwei weitere Schrägstriche hinzu. Zum Beispiel UNC -Pfad \\ remotehost \ share \ dire \ file.txt
würde werden Datei: ////remotehost/share/dir/file.txt
statt der "gesunden" Datei: //remotehost/share/dir/file.txt
.
Webseiten
Datei -URLs werden selten in verwendet Webseiten Im öffentlichen Internet, da sie implizieren, dass eine Datei auf dem benannten Gastgeber vorhanden ist. Das Gastgeber Der Spezifizierer kann verwendet werden, um eine Datei aus einer externen Quelle abzurufen, obwohl kein spezifisches Datei-Retrieval-Protokoll angegeben ist. und es sollte zu einer Nachricht führen, die den Benutzer darüber informiert, dass kein Mechanismus für den Zugriff auf diese Maschine verfügbar ist.
Verweise
- ^ Das URI -Schema "Datei". doi:10.17487/rfc8089. RFC 8089. Abgerufen 16. Oktober, 2018.
- ^ RFC 8089, Abschnitt 2
- ^ RFC 3986, Abschnitt 3.2.2
- ^ RFC 3986, Abschnitt 3.3
- ^ RFC 8089, Anhang E.
- ^ a b Risney, Dave (2006). "Datei uris in Windows". Ieblog. Microsoft Corporation. Abgerufen 2020-10-02.
- ^ Die bizarre und unglückliche Geschichte von 'Datei:' URLs - Kostenlose Assoziationen - Site Home - MSDN -Blogs. Blogs.msdn.com (2005-05-19). Abgerufen am 2014-03-08.