web-dev-qa-db-de.com

Wie kann ich auf einer lokal ausgeführten Webseite einen Link zu einer lokalen Datei erstellen?

Ich hätte gerne eine HTML-Datei, die bestimmte Dateien auf meiner Festplatte verteilt. Ich habe zum Beispiel zwei Dateien, auf die ich verlinken würde:

  • C:\Programs\sort.mw
  • C:\Videos\lecture.mp4

Das Problem ist, dass die Links als Verknüpfung zur Datei dienen sollen. Ich habe folgendes versucht:

<a href="C:\Programs\sort.mw">Link 1</a>
<a href="C:\Videos\lecture.mp4">Link 2</a>

... aber der erste Link macht nichts und der zweite Link öffnet die Datei in Chrome, nicht VLC.

Meine Fragen sind:

  1. Gibt es eine Möglichkeit, mein HTML anzupassen, um die Links als Verknüpfungen zu den Dateien zu behandeln?

  2. Wenn es keine Möglichkeit gibt, den HTML-Code anzupassen, gibt es andere Möglichkeiten, eine Verknüpfung zu Dateien herzustellen, die auf der Festplatte verteilt sind?

Mein Computer läuft unter Windows 7 und mein Webbrowser ist Chrome.

136

Sie müssen das file:///-Protokoll (ja, das sind drei Schrägstriche) verwenden, wenn Sie mit lokalen Dateien verknüpfen möchten.

<a href="file:///C:\Programs\sort.mw">Link 1</a>
<a href="file:///C:\Videos\lecture.mp4">Link 2</a>

Diese Datei öffnet die Datei niemals automatisch in Ihren lokalen Anwendungen. Dies ist aus Sicherheitsgründen im letzten Abschnitt beschrieben. Wenn es geöffnet wird, wird es immer nur im Browser geöffnet. Wenn Ihr Browser die Datei anzeigen kann, wird dies angezeigt, andernfalls werden Sie wahrscheinlich gefragt, ob Sie die Datei herunterladen möchten.

Einige Browser, wie beispielsweise moderne Versionen von Chrome, lehnen es sogar ab, vom http-Protokoll auf das Dateiprotokoll zu wechseln. Stellen Sie also sicher, dass Sie dies lokal mithilfe des Dateiprotokolls öffnen, wenn Sie dies überhaupt tun möchten.

Warum bleibt es ohne file:/// stecken?

Der erste Teil einer URL ist das Protokoll. Ein Protokoll besteht aus wenigen Buchstaben, dann aus einem Doppelpunkt und zwei Schrägstrichen. HTTP:// und FTP:// sind gültige Protokolle; C:/ ist nicht und ich bin mir ziemlich sicher, dass es einem gar nicht richtig ähnelt.

C:/ ist auch keine gültige Webadresse. Der Browser könnte davon ausgehen, dass er http://c/ mit einem leeren Port angegeben ist. Dies schlägt jedoch fehl.

Ihr Browser kann nicht davon ausgehen, dass er sich auf eine lokale Datei bezieht. Es gibt wenig Grund, diese Annahme zu treffen, da öffentliche Websites normalerweise nicht versuchen, eine Verknüpfung zu den lokalen Dateien der Benutzer herzustellen.

Wenn Sie also auf lokale Dateien zugreifen möchten: Sagen Sie ihm, das Dateiprotokoll zu verwenden.

Warum drei Schrägstriche?

Weil es Teil des File URI-Schemas ist . Sie haben die Möglichkeit, nach den ersten zwei Schrägstrichen einen Host anzugeben. Wenn Sie die Angabe eines Hosts überspringen, wird davon ausgegangen, dass Sie sich auf eine Datei auf Ihrem eigenen PC beziehen. Das bedeutet, file:///C:/etc ist eine Abkürzung für file://localhost/C:/etc.

Diese Dateien werden immer noch in Ihrem Browser geöffnet und das ist gut

Ihr Browser reagiert auf diese Dateien auf dieselbe Weise, wie sie überall im Internet auf dieselbe Datei reagieren würden. Diese Dateien werden nicht in Ihrem Standard-Dateiverwaltungsprogramm (z. B. MS Word oder VLC Media Player) geöffnet, und Sie können wird nicht in der Lage sein, den Dateispeicherort mit dem Dateiexplorer zu öffnen .

Dies ist eine sehr gute Sache für Ihre Sicherheit.

Sites in Ihrem Browser können nicht sehr gut mit Ihrem Betriebssystem interagieren. Wenn eine gute Site Ihrem Computer mitteilen kann, dass sie lecture.mp4 in VLC.exe öffnen soll, könnte eine böswillige Site virus.bat in CMD.exe öffnen . Oder Sie können Ihrem Computer lediglich mitteilen, dass er einige Uninstall.exe -Dateien ausführen oder den Datei-Explorer Millionen Mal öffnen soll.

Das mag für Sie nicht bequem sein, aber HTML- und Browser-Sicherheit wurden nicht wirklich für das, was Sie tun, entwickelt. Wenn Sie lecture.mp4 in VLC.exe öffnen möchten, sollten Sie stattdessen eine Desktopanwendung schreiben.

226
doppelgreener

Wenn Sie auf Ihrem PC IIS ausführen, können Sie das Verzeichnis, das Sie erreichen möchten, als virtuelles Verzeichnis hinzufügen. Klicken Sie dazu mit der rechten Maustaste auf Ihre Site in ISS und klicken Sie auf "Add Virtual Directory" (Virtuelles Verzeichnis hinzufügen). Richten Sie den virtuellen Ordner auf Ihren Ordner auf Ihrem lokalen PC. Sie müssen auch Anmeldeinformationen angeben, die über Zugriffsrechte für den jeweiligen Ordner verfügen, z. HOSTNAME\Benutzername und Kennwort ..__ Danach können Sie auf die Datei im virtuellen Ordner wie jede andere Datei auf Ihrer Site zugreifen.

http://sitename.com/virtual_folder_name/filename.fileextension

Das funktioniert übrigens auch mit Chrome, das die Dateiprotokolldatei sonst nicht akzeptiert: //

Hoffe das hilft jemandem :)

12
user3507261

Am besten Janky

<a href="file://///server/folders/x/x/filename.ext">right click </a></td>

klicken Sie dann mit der rechten Maustaste, wählen Sie die Option "Standort kopieren" und fügen Sie sie in die URL ein.

5
Chet Meinzer

zurück bis 2017:

verwenden Sie URL.createObjectURL (file) , um eine lokale Verknüpfung zum Dateisystem zu erstellen, das der Benutzer auswählen kann.

vergessen Sie nicht, Speicherplatz freizugeben, indem Sie URL.revokeObjectURL () verwenden

0
pery mimon

Ich habe einen Weg und arbeite so:

<'a href="FOLDER_PATH" target="_Explorer.exe">Link Text<'/a>
0
Maciej