Ich möchte eine HTML-Datei haben, die bestimmte Dateien organisiert, die über meine Festplatte verstreut sind. Zum Beispiel habe ich zwei Dateien, die ich verlinken würde:
C:\Programs\sort.mw
C:\Videos\lecture.mp4
Das Problem ist, dass ich möchte, dass die Links als Verknüpfung zu der Datei fungieren. Ich habe folgendes versucht:
<a href="https://stackoverflow.com/questions/18246053/C:\Programs\sort.mw">Link 1</a>
<a href="C:\Videos\lecture.mp4">Link 2</a>
… aber der erste Link tut nichts und der zweite Link öffnet die Datei in Chrome, nicht in VLC.
Meine Fragen sind:
-
Gibt es eine Möglichkeit, meinen HTML-Code so anzupassen, dass die Links als Verknüpfungen zu den Dateien behandelt werden?
-
Wenn es keine Möglichkeit gibt, den HTML-Code anzupassen, gibt es andere Möglichkeiten, ordentlich auf Dateien zu verlinken, die auf der Festplatte verstreut sind?
Auf meinem Computer läuft Windows 7 und mein Webbrowser ist Chrome.
Sie müssen die verwenden file:///
protocol (ja, das sind drei Schrägstriche), wenn Sie auf lokale Dateien verlinken möchten.
<a href="file:///C:\Programs\sort.mw">Link 1</a>
<a href="file:///C:\Videos\lecture.mp4">Link 2</a>
Diese werden die Datei niemals automatisch in Ihren lokalen Anwendungen öffnen. Das ist aus Sicherheitsgründen, die ich im letzten Abschnitt behandeln werde. Wenn es geöffnet wird, wird es immer nur im Browser geöffnet. Wenn Ihr Browser die Datei anzeigen kann, wird er dies tun, andernfalls werden Sie wahrscheinlich gefragt, ob Sie die Datei herunterladen möchten.
Sie können nicht von http(s) zum Dateiprotokoll wechseln
Moderne Versionen vieler Browser (z. B. Firefox und Chrome) weigern sich, vom http(s)-Protokoll zum Dateiprotokoll zu wechseln, um bösartiges Verhalten zu verhindern.
Dies bedeutet, dass eine Webseite, die irgendwo auf einer Website gehostet wird, niemals auf Dateien auf Ihrer Festplatte verlinken kann. Sie müssen Ihre Webseite lokal mit dem Dateiprotokoll öffnen, wenn Sie diese Dinge überhaupt tun möchten.
Warum bleibt es ohne hängen file:///
?
Der erste Teil einer URL ist das Protokoll. Ein Protokoll besteht aus ein paar Buchstaben, dann einem Doppelpunkt und zwei Schrägstrichen. HTTP://
und FTP://
sind gültige Protokolle; C:/
ist es nicht und ich bin mir ziemlich sicher, dass es nicht einmal richtig einem ähnelt.
C:/
ist auch keine gültige Webadresse. Der Browser könnte davon ausgehen, dass es so sein soll http://c/
mit einem leeren Port angegeben, aber das wird fehlschlagen.
Ihr Browser geht möglicherweise nicht davon aus, dass er auf eine lokale Datei verweist. Es gibt wenig Grund, diese Annahme zu treffen, da Webseiten im Allgemeinen nicht versuchen, auf die lokalen Dateien der Benutzer zu verlinken.
Wenn Sie also auf lokale Dateien zugreifen möchten: Sagen Sie ihm, dass es das Dateiprotokoll verwenden soll.
Warum drei Schrägstriche?
Denn es gehört dazu Datei-URI-Schema. Sie haben die Möglichkeit, nach den ersten beiden Schrägstrichen einen Host anzugeben. Wenn Sie die Angabe eines Hosts überspringen, wird einfach angenommen, dass Sie sich auf eine Datei auf Ihrem eigenen PC beziehen. Das heisst 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 so
Ihr Browser reagiert auf diese Dateien genauso, wie er auf dieselbe Datei überall im Internet reagieren würde. Diese Dateien wird nicht Öffnen Sie in Ihrem Standard-Dateihandler (z. B. MS Word oder VLC Media Player) und Sie wird nicht in der Lage sein, den Datei-Explorer zu bitten, den Speicherort der Datei zu öffnen.
Dies ist eine äußerst gute Sache für Ihre Sicherheit.
Websites in Ihrem Browser können nicht sehr gut mit Ihrem Betriebssystem interagieren. Wenn eine gute Site Ihrem Computer mitteilen könnte, dass er geöffnet werden soll vortrag.mp4 in VLC.exekönnte eine bösartige Website sagen, dass es geöffnet werden soll virus.bat in CMD.exe. Oder es könnte Ihrer Maschine einfach sagen, dass sie ein paar ausführen soll Uninstall.exe Dateien oder öffnen Sie den Datei-Explorer millionenfach.
Dies mag für Sie nicht bequem sein, aber HTML und Browsersicherheit wurden nicht wirklich für das entwickelt, was Sie tun. Wenn Sie öffnen möchten vortrag.mp4 in VLC.exe Erwägen Sie stattdessen, eine Desktop-Anwendung zu schreiben.
Wenn Sie IIS auf Ihrem PC 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 drücken Sie „Virtuelles Verzeichnis hinzufügen“. Benennen Sie den virtuellen Ordner. Richten Sie den virtuellen Ordner auf Ihren Ordnerspeicherort auf Ihrem lokalen PC. Sie müssen auch Anmeldeinformationen angeben, die über Berechtigungen zum Zugriff auf den bestimmten Ordner verfügen, z. HOSTNAME\Benutzername und Passwort. Danach können Sie auf die Datei im virtuellen Ordner wie auf jede andere Datei auf Ihrer Site zugreifen.
http://sitename.com/virtueller_ordner_name/dateiname.dateierweiterung
Das funktioniert übrigens auch mit Chrome, das sonst das Dateiprotokoll file:// nicht akzeptiert.
Hoffe das hilft jemandem 🙂
Janky bestenfalls
<a href="https://stackoverflow.com/questions/18246053/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 dann in die URL ein.
zurück zu 2017:
verwenden URL.createObjectURL( Datei ) um eine lokale Verbindung zum Dateisystem zu erstellen, das der Benutzer auswählt;
Vergessen Sie nicht, Speicher freizugeben, indem Sie verwenden URL.revokeObjectURL()
Ich habe einen Weg und arbeite so:
<'a href="https://stackoverflow.com/questions/18246053/FOLDER_PATH" target="_explorer.exe">Link Text<'/a>