Moin!
Dann soll der Webserver einfach auf die lokalen Verzeichnise zugreifen, diese auslesen und eine SELECT-Liste oder sonst eine Auswahlstruktur (SELECT ist bei potentiell mehr als 100 Optionen keine vernünftige Idee mehr) dynamisch generieren. Dann kann der Benutzer für den Server mundgerecht den Pfad auswählen.
Hast Du mal zu Ende gedacht, was das für den Netzwerktraffic bedeuten würde? Nehmen wir nur 10 Client-PCs an. Davon rufen nur mal 5 gleichzeitig diese Seite auf. Der Server lässt nun sein Script in fünf Instanzen rekursiv über fünf Netzwerk-Filesysteme(von ihm aus gesehen) rattern, um diese auszulesen.
Da muß man gar keine Netzwerkszenarien bemühen. Mutmaßlich schaut es hier (Low-Level-Szenario angenommen) so aus, als würden sich Client und Browser auf der gleichen Maschine befinden.
Alleine das _vollständige_ Durchgehen und generieren aller existierenden Verzeichnisse wäre eine sehr aufwendige Aufgabe. Allein mein Laufwerk C, auf dem sich außer Windows eigentlich nichts befinden sollte (Userdaten und Anwendungen sind für gewöhnlich auf anderen Laufwerken abgelegt), enthält fast 34.000 Dateien in fast 2000 Ordnern.
Eine Liste mit 2000 Auswahlmöglichkeiten ist aber sowohl für den Benutzer vollkommen unmöglich sinnvoll handhabbar, sie ist darüber hinaus auch vollkommen unmöglich mit "einfachen Mitteln" generierbar - sowas kosten enorm viel Zeit, mindestens beim ersten Mal, Caching hat aber das dumme Problem, dass man es auch nicht übermäßig lange gültig lassen darf.
Selbst die Idee, nur die Verzeichnisse des serverlokalen Dateisystems rekursiv komplett auszugeben ist daher eigentlich eine Wahnsinnsidee.
Ich habe mal in PHP einen Texteditor mit Dateibrowser geschrieben. Der Benutzer kann dort nicht nur im aktuellen Verzeichnis browsen, sondern sich die Liste auch rekursiv anzeigen lassen. Das ist ganz hilfreich, wenn man z.B. sein Userverzeichnis mit einer Ebene Unterverzeichnissen betrachten will - man kommt schnell und ohne zusätzlichen Klick direkt an alle Dateien heran.
Ungezügelte Rekursivität ausgehend vom Rootverzeichnis hingegen hat erstens Ewigkeiten auf dem Server benötigt, und produzierte zweitens Megabytes an Seitendaten, bei denen der Browser schon Schwierigkeiten mit der Darstellung hatte.
Insofern: Browsing im Dateiverzeichnis ist eindeutig eine Förderung der Zugänglichkeit zu dieser Datenbank, und ein Neuproduzieren von <input type="file"> muß daher mehr oder weniger zwingend das Verhalten und das Informationsangebot des vom Betriebssystem bekannten Dateiauswahldialogs imitieren.
Deshalb löst man so etwas eigentlich so, dass jeder Nutzer auf dem Server einen Dateisystembereich hat, in dem er auch Schreibzugriffe initiieren darf. Der Server muss dann, auf Nutzeranforderung, nur _diesen_ Bereich seines eigenen Filesystems durchrattern, um die Verzeichnisliste zu generieren. Das setzt natürlich eine vorherige Anmeldung der Nutzer voraus.
Ich widerspreche. Das Problem ist primär NICHT, dass so viele verschiedene Laufwerke auf unterschiedlichen Rechnern ausgelesen werden, und dass dadurch bei jedem Abruf der Auswahlfunktion das Netzwerk geflutet wird, sondern dass auch beim Konzept "Userverzeichnis auf dem Server" niemals garantiert werden kann, dass nicht auch dort eine komplexe, ausufernde Verzeichnisstruktur angelegt wird.
Ich kann in diesem Zusammenhang als Beispiel nur den sehr sehr traurigen Dateiauswahldialog von diversen Content-Management-Systemen anführen. Insbesondere ein CMS macht es dem Benutzer besonders schwer (den Namen nenne ich jetzt mal nicht): Die Dateien landen allesamt in genau EINEM Verzeichnis (man kann unterschiedliche Verzeichnisse haben, aber im CMS muß man das zu verwendende Verzeichnis fix mit dem Datenfeld, dass der Benutzer befüllt, verbinden), und der Dialog bietet dann eine Liste (alternativ als "Asset-Management" auch eine Thumbnailansicht, wenn man das als Admin für das Verzeichnis festgelegt hat) der enthaltenen Dateien, und zum Durcharbeiten dann "weiter" zur "zurück". Immerhin kann man mit einer Suchfunktion, die auch Wildcards erlaubt, nach den Dateinamen suchen - aber im Laufe der Zeit sammeln sich einfach so viele Dateien an, dass man, um überhaupt auf altes Material zugreifen zu können, eigentlich nur noch per Suchfunktion (also mit Kenntnis des Dateinamens) etwas finden kann - fünf oder mehr Seiten mit je etwa 20 bis 30 Dateien sind alles andere als zugänglich.
Das Löschen ist noch schrecklicher gelöst: Je Datei gibt es ein Icon - und nach Abschluß des Löschens landet man wieder auf Seite 1, müßte also erneut über Seite 2, Seite 3 und Seite 4 auf Seite 5 weiterklicken...
- Sven Rautenberg
My sssignature, my preciousssss!