readdir auf Netz-Laufwerk, Dateien direkt verlinken

HoPi

Mitglied
Moin,

auf einem Netzlaufwerk ( N: ), das auf einem zentralen Server läuft, ist eine bestimmte Verzeichnisstruktur gegeben, z.B. N:\Kunden\<Kundennummer>\<YYYY-MM>. In einer Web-Anwendung möchte ich zu einem ausgewählten Monat die Dateien anzeigen, die sich im Verzeichnis befinden. Das ist mit einem Skript wie diesem (vgl. php: readdir()) kein Problem:

Code:
if ($handle = @opendir($dir)) {
	$fileList = array();
	while (false !== ($file = readdir($handle))) {
		if ($file != '.' && $file != '..')
		$fileList[] = $file;
	}
closedir($handle);

Nun möchte ich die Datei so verlinken, dass ein Browser-Benutzer diese "lokal" öffnet. Sie sollen also nicht von einem Web-Server an den Browser geschickt werden (das wäre dann erstmal ein Download, Speichern in temporären Dateien, doppelter Datenmüll) sondern direkt mit dem auf dem Client eingestellten Programm geöffnet werden. Ich habe versucht, die Dateien per
Code:
<a href="file://N/Kunden/...">Datei</a>
zu verlinken - das funktioniert aber entweder gar nicht oder (mit anderer Schreibweise) nur im IE.

Da es sich um eine Anwendung in meinem Betrieb handelt, kann ich quasi alles machen: Java-Applets einbinden (das möchte ich aber ungern), JavaScript ausnutzen, Plugins installieren, irgendwelche Shell-Skripte basteln - nur sollte das möglichst Browser- und OS-unabhängig laufen (Win/Mac, Firefox/Safari). Browser-Weichen wären kein Problem, den User-Agent wird keiner hier faken :)

Habt ihr 'ne Idee, wie ich das am schönsten lösen kann?
 
Moin,

ansich sollte der Pfad so lauten, würde ich meinen:
Code:
<a href="file:///N:/Kunden/...">Datei</a>

Das generelle Problem ist aber dieses:
Der Link ist ja in einem Dokument das von einem Webserver angefragt wird.
Die meisten Browser werden dort das Verfolgen von Links auf das lokale Dateisystem des Rechners(das Netzlaufwerk wird als solches angesehen werden) verweigern.

Ich sehe daher als brauchbare, systemunabhängige Lösung leider nur den Umweg über den Server...ein weiteres PHP-Skript, welches diese Datei per readfile() an den Clienten durchreicht.
 
Danke. Habe gerade noch ein wenig rumprobiert und bin dabei auf diesen Link gestoßen: http://kb.mozillazine.org/Firefox_:_Issues_:_Links_to_Local_Pages_Don't_Work

Meine Lösung: iframe src="file://///<Rechner-Name>/<Freigabe>/<Verzeichnis>" (falls mal jemand auf die Idee kommt, die Netzlaufwerke zu ändern):
- funktioniert im IE auf Anhieb, sogar das Kopieren per Drag & Drop in dieses Verzeichnis ist möglich
- funktioniert im Firefox mit NoScript, wenn Einstellungen - Erweitert - Vertrauenswürdig - "Links auf lokale Dateien erlauben" angehakt ist
- funktioniert im Firefox ohne NoScript, wenn in der user.js (im Profilverzeichnis)
Code:
user_pref("capability.policy.policynames", "localfilelinks");
user_pref("capability.policy.localfilelinks.sites", "http://<Server>");
user_pref("capability.policy.localfilelinks.checkloaduri.enabled", "allAccess");
eingetragen wird

Safari unter Windows zeigt leider nichts im iframe an. Ich kann leider auch nicht testen, wie das unter MacOS laufen würde. Ich lass den Thread deshalb nochmal auf "nicht erledigt".
 
Was gehen könnte(JS vorrausgesetzt):

Lasse den Nutzer eine HTML-Seite lokal speichern.
Diese HTML-Seite könnte ein Javascript vom Webserver einbinden, welches in dem lokalen Dokument den gewünschten HTML-Code für die Links ausgibt.
Auf die Linkziele sollte jetzt Zugriff möglich sein, da sich sowohl Dokument als auch Linkziele im lokalen Dateisystem befinden.
 
Zurück