Wie kann ich eine Verzeichnisauswahl auf einer HTML-Seite erstellen?
Wenn ich ein Eingabedateielement verwende, kann ich nur die Datei auswählen, aber ich muss stattdessen das Verzeichnis auswählen.
Ich muss dies tun, weil der Benutzer einen richtigen Pfad in seinem Computer auswählen sollte.
Irgendwelche Lösungen?
70
Antworten:
Kann aus Sicherheitsgründen nicht in reinem HTML / JavaScript ausgeführt werden.
Die Auswahl einer Datei zum Hochladen ist das Beste, was Sie tun können, und selbst dann erhalten Sie in modernen Browsern nicht den vollständigen ursprünglichen Pfad.
Möglicherweise können Sie mit Java oder Flash etwas zusammenstellen (z. B. mit SWFUpload als Grundlage), aber es ist viel Arbeit und bringt zusätzliche Kompatibilitätsprobleme mit sich.
Ein anderer Gedanke wäre, eine
iframe
Anzeige des Benutzers zu öffnenC:
Laufwerks (oder was auch immer) aber selbst wenn dies heutzutage möglich ist (aus Sicherheitsgründen blockiert werden könnte, seit langem nicht mehr versucht wurde), ist es für Ihre Website unmöglich, mit dem Iframe zu kommunizieren (wieder aus Sicherheitsgründen).Wofür brauchst du das?
quelle
Versuchen Sie dies, ich denke, es wird für Sie funktionieren:
<input type="file" webkitdirectory directory multiple/>
Die Demofinden Sie unterhttps://plus.google.com/+AddyOsmani/posts/Dk5UhZ6zfF3. Wenn Sie weitere Informationen benötigen, finden Sie diese hier .quelle
non-standard
. Außerdem werden die enthaltenen Dateien rekursiv (?) Hochgeladen, wobei auch der Ordnername angezeigt wird. Dies wird für die meisten Fälle tunWenn Sie der Server und der Benutzer sind (z. B. wenn Sie eine App erstellen, die über den Browser funktioniert und Sie einen Ordner auswählen müssen), versuchen Sie,
JFileChooser
vom Server aus anzurufen, wenn im Browser auf eine Schaltfläche geklickt wirdJFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new java.io.File(".")); chooser.setDialogTitle("select folder"); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false);
Dieser Code ist von hier abgeschnitten
quelle
Skripte sind unvermeidlich.
Dies wird aufgrund des Sicherheitsrisikos nicht bereitgestellt.
<input type='file' />
ist am nächsten, aber nicht das, was Sie suchen.Testen Sie dieses Beispiel , das Javascript verwendet, um das zu erreichen, was Sie möchten.
Wenn das Betriebssystem Windows ist, können Sie mithilfe von VB-Skripten auf die zentralen Steuerdateien zugreifen, um nach einem Ordner zu suchen.
quelle
Ich habe eine Arbeit gemacht. Ich hatte ein verstecktes Textfeld, um den Wert zu halten. Dann habe ich auf form_onsubmit den Pfadwert abzüglich des Dateinamens in den versteckten Ordner kopiert. Setzen Sie dann das Feld fileInput auf "". Auf diese Weise wird keine Datei hochgeladen. Ich erinnere mich nicht an das Ereignis des fileUpload-Steuerelements. Vielleicht wechseln. Es ist eine Weile her. Wenn es einen Wert gibt, analysiere ich den Dateinamen und lege den Ordner wieder in die Box. Natürlich würden Sie überprüfen, ob die Datei eine gültige Datei ist. Dies würde Ihnen den Arbeitsstationsordner des Clients geben.
Wenn Sie jedoch Serverpfade widerspiegeln möchten, ist ein ganz anderer Codierungsansatz erforderlich.
quelle
Wenn Sie nicht zu viele Ordner haben, empfehlen wir Ihnen, if-Anweisungen zu verwenden, um einen Upload-Ordner abhängig von den Benutzereingabedetails auszuwählen. Z.B
String user= request.getParameter("username"); if (user=="Alfred"){ //Path A; } if (user=="other"){ //Path B; }
quelle