Wie kann ein HTML-Link einen Ordner öffnen?

106

Ich muss Benutzer einer Anwendung einen Ordner öffnen lassen, indem ich auf einen Link innerhalb einer Webseite klicke. Der Pfad des Ordners befindet sich im Netzwerk und kann von überall aus aufgerufen werden. Ich bin mir wahrscheinlich sicher, dass es keinen einfachen Weg gibt, dies zu tun, aber vielleicht irre ich mich?

Sebastien Lachance
quelle
4
Ich habe unten geantwortet; Dies ist eine häufige Anforderung von Unternehmenswebanwendungen, die durch fehlgeleitete Sicherheit nahezu unmöglich wird (es sollte möglich sein, Dateilinks auf vertrauenswürdigen http-Seiten zu aktivieren). Ich habe nur ausgiebig unter Windows getestet.
Andrew Duffy

Antworten:

107

Möchten Sie einen freigegebenen Ordner im Windows Explorer öffnen? Sie müssen einen file:Link verwenden, aber es gibt einige Einschränkungen:

  • Internet Explorer funktioniert, wenn der Link ein konvertierter UNC-Pfad ist ( file://server/share/folder/).
  • Firefox funktioniert, wenn der Link in seiner eigenen entstellten Form mit fünf Schrägstrichen ( file://///server/share/folder) vorliegt und der Benutzer die Sicherheitsbeschränkung für file:Links auf einer Seite deaktiviert hat, die über HTTP bereitgestellt wird . Zum Glück akzeptiert IE auch das Formular für verstümmelte Links.
  • Opera, Safari und Chrome können nicht davon überzeugt werden, einen file:Link auf einer Seite zu öffnen, die über HTTP bereitgestellt wird.
Andrew Duffy
quelle
4
im IE nur, wenn sich der UNC-Pfad und die Website mit dem Link in derselben Domäne befinden, dh nur im Intranet.
Stefan Steiger
4
Ich denke, das ist nicht mehr richtig - neuere Versionen von IE scheinen dieses Verhalten genauso zu blockieren wie Chrome / Safari / etc.
ZeekLTK
1
Ich habe dies gerade in IE 11 versucht und Sie können tatsächlich eine lokale Datei öffnen, ohne sie herunterzuladen (wie beim Öffnen eines bereits vorhandenen Dateipfads). Dies gibt es in Chrom noch nicht.
Hohohodown
4
Sie können dies in Chrome über die LocalLinks Chrome-Erweiterung zum Laufen bringen . Dank dieser StackOverflow-Antwort
Zach Johnson
@ Andrew Duffy, gibt es irgendeine Dokumentation, die besagt, dass Google Chrome dieses Verhalten blockiert? Ich würde gerne mehr darüber wissen
Wortspiel
7

Die URL file://[servername]/[sharename]sollte ein Explorer-Fenster für den freigegebenen Ordner im Netzwerk öffnen.

stark koffeinhaltig
quelle
4

Stellen Sie sicher, dass Ihre Ordnerberechtigungen so eingestellt sind, dass eine Verzeichnisliste zulässig ist, und richten Sie Ihren Anker dann einfach mit chmod 701 auf diesen Ordner (was jedoch riskant sein kann)

<a href="./downloads/folder_i_want_to_display/" >Go to downloads page</a>

Stellen Sie sicher, dass Sie keine index.html-Indexdatei in diesem Verzeichnis haben

sperren
quelle
Diese Antwort funktioniert. Der Teil "Verzeichnisliste erlaubt" ist sehr wichtig. Wenn dies nicht zulässig ist, können Sie es aktivieren, es ist jedoch für jede Serveranwendung unterschiedlich.
Travis
3

Die Verwendung von file: ///// funktioniert einfach nicht, wenn die Sicherheitseinstellungen auf ein moderates Niveau eingestellt sind.

Wenn Sie nur möchten, dass Benutzer Dateien * in einem Netzwerk herunterladen oder anzeigen oder freigeben können, können Sie ein virtuelles Verzeichnis in IIS einrichten. Stellen Sie auf der Registerkarte Eigenschaften sicher, dass "Eine Freigabe auf einem anderen Computer" ausgewählt ist und "Verbinden als ..." ein Konto ist, das den Netzwerkspeicherort anzeigen kann.

Wenn Sie von Ihrer Webseite aus auf das virtuelle Verzeichnis verlinken (z. B. http: // yoursite / yourvirtualdir / ), wird eine Ansicht des Verzeichnisses im Webbrowser geöffnet.

* Sie können Schreibberechtigungen für das virtuelle Verzeichnis zulassen, damit Benutzer Dateien hinzufügen können, diese jedoch nicht ausprobiert haben, und davon ausgehen, dass Netzwerkberechtigungen diese Einstellung überschreiben würden.

Bickie
quelle
Dies ist heute relevant, da Chrome und neuere Versionen von IE den Zugriff auf lokale Datei: // Ressourcen von Nicht-Datei-Webseiten blockieren. Darüber hinaus kann dies so eingerichtet werden, dass es in IIS Express ausgeführt wird, obwohl es hinzugefügt und manuell ausgeführt werden muss.
Schmuli
1

Sie können die Linkadresse auch kopieren und in ein neues Fenster einfügen, um die Sicherheit zu umgehen. Dies funktioniert in Chrome und Firefox, aber Sie müssen möglicherweise Schrägstriche in Firefox hinzufügen.

Wyrmwood
quelle
1

Ein bisschen spät zur Party, aber ich musste das kürzlich für mich selbst lösen, obwohl es etwas anders ist, könnte es immer noch jemandem helfen, der ähnliche Umstände wie ich hat.

Ich verwende xampp auf einem Laptop, um eine rein lokale Website-App unter Windows auszuführen. (Eine sehr spezifische Umgebung, die ich kenne). In diesem Fall verwende ich einen HTML-Link zu einer PHP-Datei und führe Folgendes aus:

shell_exec('cd C:\path\to\file');
shell_exec('start .');

Dies öffnet ein lokales Windows Explorer-Fenster.

Lucas Taulealea
quelle
1
Vielversprechend, aber wenn ich dies in Firefox ausführe, hängt die Registerkarte. (Scheint die Sitzung zu drehen oder so, weil ich auf andere Sites zugreifen kann, aber diese Site scheint hängen zu bleiben - sogar in anderen Tabs!)
Stephen R
Ich habe es gerade in Firefox getestet, es funktioniert für mich, aber ich kann nicht angeben, in welchem ​​Ordner es geöffnet werden soll. Es wird nur im Stammverzeichnis der PHP-Datei geöffnet.
Lucas Taulealea
0

Hoffe, es wird jemandem eines Tages helfen. Ich habe einen kleinen POC gemacht und bin darauf gestoßen. Eine Schaltfläche, onClick zeigt den Inhalt des Ordners an. Unten ist der HTML-Code,

<input type=button onClick="parent.location='file:///C:/Users/' " value='Users'>
Nagaraja JB
quelle