web-dev-qa-db-de.com

Wie gibt man eine lokale Datei innerhalb von html mit dem file: schema an?

Ich lade eine HTML-Datei, die auf dem in Apache-Server integrierten OS X gehostet wird. Innerhalb dieser Datei verweise ich auf eine andere HTML-Datei in demselben Verzeichnis wie folgt:

<a href="2ndFile.html"><button type="submit">Local file</button>

Das funktioniert. Ich experimentiere jedoch (aus Gründen, die zu langwierig sind), um das file: schema zu verwenden, aber ich bekomme nichts zur Arbeit. So schreibe ich die obige Zeile mit der Datei neu:

<a href="file://192.168.1.57/~User/2ndFile.html"><button type="submit">Local file</button>

(192.168.1.57 ist meine aktuelle IP-Adresse)

Das Ändern auf Folgendes funktioniert nicht:

<a href="file://Name-Of-MacBookPro/~User/2ndFile.html"><button type="submit">Local file</button>

Die Datei kann jedoch nicht gefunden werden. Wie sollte sie mit dem Schema file: angegeben werden?

25
Gruntcakes

Das file:-URL-Schema bezieht sich auf eine Datei auf dem Client-Computer. Das file:-Schema enthält keinen Hostnamen. Sie geben nur den Pfad der Datei an. Die Datei auf Ihrem lokalen Computer lautet also file:///~User/2ndFile.html. Beachten Sie die drei Schrägstriche. Der Hostname-Teil der URL ist leer. Der Schrägstrich am Anfang des Pfads folgt unmittelbar dem doppelten Schrägstrich am Anfang der URL. Sie müssen auch den Pfad des Benutzers erweitern. ~ wird in einer file:-URL nicht erweitert. Sie benötigen also file:///home/User/2ndFile.html (bei den meisten Unixen), file:///Users/User/2ndFile.html (bei Mac OS X) oder file:///C:/Users/User/2ndFile.html (bei Windows).

Viele Browser erlauben aus Sicherheitsgründen keine Verknüpfung von einer Datei, die von einem Server geladen wird, zu einer lokalen Datei. Daher können Sie dies möglicherweise nicht von einer über HTTP geladenen Seite ausführen. Sie können möglicherweise nur Links zu file:-URLs von anderen lokalen Seiten erstellen.

40
Brian Campbell

Das 'Datei'-Protokoll ist kein Netzwerkprotokoll. Daher macht die Datei: //192.168.1.57/~User/2ndFile.html einfach keinen Sinn. 

Die Frage ist, wie Sie die erste Datei laden. Wird das wirklich mit einem Webserver gemacht? Klingt nicht wirklich wie. Wenn ja, warum dann nicht dasselbe Protokoll verwenden, höchstwahrscheinlich http? Sie können nicht erwarten, dass Sie einfach das Protokoll wechseln und zwei verschiedene Protokolle auf dieselbe Weise verwenden ...

Ich vermute, die erste Datei wird wirklich über den Apache-Server geladen, aber einfach durch Öffnen der Datei. href = "2ndFile.html" funktioniert einfach, weil es eine "relative URL" verwendet. Dadurch verwendet der Browser dasselbe Protokoll und denselben Pfad, von dem er die erste (aktuelle) Datei erhalten hat. 

2
arkascha

das URL-Protokoll "file: //" kann nur zum Suchen von Dateien im Dateisystem des lokalen Computers verwendet werden. Da dieser HTML-Code von einem Browser interpretiert wird, ist der "lokale Computer" der Computer, auf dem der Browser ausgeführt wird.

wenn Sie Fehler bei der Datei nicht finden, vermute ich, dass die Datei nicht gefunden wurde. Es kann jedoch auch eine Sicherheitsbeschränkung des Browsers sein. In einigen Browsern können Sie nicht auf eine Dateisystemdatei von einer Nicht-Dateisystem-HTML-Seite verweisen. Sie können versuchen, den Dateipfad von der Befehlszeile des Computers aus zu verwenden, auf dem der Browser ausgeführt wird, um zu bestätigen, dass dies eine Browser-Einschränkung ist und keine legitime fehlende Datei.

1
james turner

Ich hatte zuvor ein ähnliches Problem, und in meinem Fall befand sich die Datei auf einem anderen Computer. Ich habe das Netzlaufwerk z dem Ordner zugeordnet, in dem sich meine Datei befindet. Dann wurde ein Kontext in Tomcat erstelltso in meinem Webprojekt konnte ich über Kontext auf die HTML-Datei zugreifen

0
msonbati