de.comp.lang.php.* FAQ

11.12. Wie kann ich mehrere Dateien auf einmal uploaden?

Antwort von Johannes Frömter

Das Auswählen mehrerer Dateien oder gar ganzer Verzeichnisse ist mit einem <input type="file">-Feld nicht möglich. Auch das Vorgeben eines bestimmten Verzeichnisses oder vollständigen Pfades ist bei File-Input-Feldern unterbunden, sei es als Angabe value="path/to/file" oder per JavaScript. Warum? Aus Sicherheitsgründen! Wem wäre es schon recht, wenn auf einer x-beliebigen Internetseite sich ein (z.B. durch Layer verstecktes) Formular mit einem Feld <input type="file" value="c:\eigene dateien\*.*"> mittels JavaScript selbsttätig abschicken würde? Eben deshalb muss jede Datei, die verschickt werden soll, vom Anwender manuell und damit bewußt ausgewählt werden.

Mehrere Dateien lassen sich verschicken

  • mit mehreren <input type="file">-Feldern - pro Datei eines (Tipp: [] an den Namen des Input-Feldes anhängen, um in PHP ein Array mit den Dateiinformationen zu erhalten)

  • als .zip- oder .tar-Datei

  • per FTP

  • mit einem eigenen Tool, das auf dem Rechner des Absenders installiert werden muss

  • per (Java-) Applet - hier gibt es mehrere kommerzielle oder kostenlose Lösungen, z.B.

Antwort von Kerry W. Lothrop

Beim Verwenden der Array-Notierung in Zusammenhang mit mehreren Datei-Upload-Feldern ist die Zuweisung im $_FILES-Array nicht so, wie man es vermuten könnte. Beispiel:

<form
  action="<?php echo $_SERVER['PHP_SELF']; ?>"
  method="post"
  enctype="multipart/form-data">
<input type="file" name="probe[test][]" />
<input type="file" name="probe[test][]" />
<input type="submit" />
</form>
<?php
if (isset($_FILES)) {
  ?><pre><?php print_r($_FILES); ?></pre><?php
}
?>

Der Name der ersten Datei z.B. findet sich in diesem Beispiel unter $_FILES['probe']['name']['test'][0], der Fehlercode der zweiten Datei unter $_FILES['probe']['error']['test'][1].

Valid HTML 4.01! Valid CSS!

11.12. Wie kann ich mehrere Dateien auf einmal uploaden?
http://www.php-faq.de/q/q-formular-mehrfach-upload.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team