Upload mehrerer Dateien
Mehrere Dateien können hochgeladen werden, indem Sie verschiedene Namen
name
für input
verwenden.
Es ist ebenfalls möglich, mehrere Dateien simultan hochzuladen, und die
Informationen automatisch in Arrays zu erhalten. Um dies zu tun, verwenden
Sie in dem HTML-Formular die gleiche Array-Sende-Syntax wie bei
Auswahllisten mit Mehrfachauswahl und Checkboxen:
Beispiel #1 Hochladen mehrerer Dateien
<form action="file-upload.php" method="POST" enctype="multipart/form-data">
Send these files:<br>
<input name="userfile[]" type="file"><br>
<input name="userfile[]" type="file"><br>
<input type="submit" value="Send files">
</form>
Wenn das obige Formular übermittelt ist, werden die Arrays
$_FILES['userfile'],
$_FILES['userfile']['name'] und
$_FILES['userfile']['size'] initialisiert.
Nehmen wir zum Beispiel an, dass die Dateinamen
/home/test/review.html und
/home/test/xwp.out übermittelt wurden. In diesem Fall
würde $_FILES['userfile']['name'][0]
review.html enthalten und
$_FILES['userfile']['name'][1] hätte den Wert
xwp.out. Genauso würde
$_FILES['userfile']['size'][0] die Dateigröße von
review.html enthalten, usw.
$_FILES['userfile']['name'][0],
$_FILES['userfile']['tmp_name'][0],
$_FILES['userfile']['size'][0] und
$_FILES['userfile']['type'][0] sind ebenfalls gesetzt.
Warnung
Die Option
max_file_uploads setzt ein
Limit auf die Anzahl der Dateien, welche in einer Anfrage hochgeladen
werden können. Sie müssen sicherstellen, dass ihr Formular nicht erlaubt,
mehr Dateien hochzuladen als dieses Limit.
Beispiel #2 Hochladen eines kompletten Verzeichnisses
In den HTML-Feldern zum Hochladen von Dateien ist es mit dem Attribut
webkitdirectory
möglich, ein ganzes Verzeichnis
hochzuladen. Diese Funktion wird von den meisten modernen Browsern
unterstützt.
Mit der Angabe full_path
ist es möglich, die
relativen Pfade zu speichern, oder das gleiche Verzeichnis auf dem
Server zu rekonstruieren.
<form action="file-upload.php" method="post" enctype="multipart/form-data">
Dieses Verzeichnis hochladen:<br />
<input name="userfile[]" type="file" webkitdirectory multiple />
<input type="submit" value="Dateien abschicken" />
</form>
Warnung
Das Attribut webkitdirectory
ist nicht standardisiert
und gehört nicht zu den Standards. Es sollte nicht auf Websites
verwendet werden, die mit dem Internet verbunden sind: Es wird nicht bei
jedem Benutzer funktionieren. Außerdem kann es große Inkompatibilitäten
zwischen Implementierungen geben, und das Verhalten kann sich in Zukunft
ändern.
PHP analysiert nur die relativen Pfadinformationen, die vom
Browser/User-Agenten übermittelt werden, und übergibt diese
Informationen an das Array $_FILES. Es gibt keine
Garantie, dass die Werte im Array full_path
eine
echte Verzeichnisstruktur enthalten, weshalb die PHP-Anwendung diesen
Informationen nicht vertrauen darf.