PHP Dateiupload - Uploadskript für mehrere Dateien
Autor
Flitze
Klicks 196553
Keywords:
Dateiupload in PHP, Dateien über ein Formular hochladen, Dateien ohne FTP-Programm hochladen, Uploadprüfung, PHP Upload Script, Uploadskript viele Dateien
Klicks 196553
Rating für PHP Dateiupload
8.4 von 10
Bewertungen50
Stand
12.06.2013
8.4 von 10
Bewertungen50
Keywords:
Dateiupload in PHP, Dateien über ein Formular hochladen, Dateien ohne FTP-Programm hochladen, Uploadprüfung, PHP Upload Script, Uploadskript viele Dateien
Breadcrumb:
Tutorials » PHP Dateiupload » PHP Dateiupload - Uploadskript für mehrere Dateien
Step 11 – Ein vollständiges Uploadskript für mehrere Dateien
[ADSENSE_LINE]Die Konfiguration und die Funktionsdefinitionen könnt ihr aus dem Quellcode für den Einzelupload (Step 8 ) übernehmen. Ich habe lediglich die Variable $anzahl_dateifelder, die die Anzahl der Felder für den Dateiupload bestimmt, ergänzt.
PHP:
<?php
// ... Konfiguration etc.
// ...
// $anzahl_dateifelder = 5;
// Beginn des Skriptes
// -----------------------------------------------
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \n".
"\"http://www.w3.org/TR/html4/strict.dtd\">\n";
echo "<html>\n";
echo "<head>\n";
echo " <title>multipler Datei-Upload</title>\n";
echo "</head>\n";
echo "<body>\n";
// Falls der Benutzer auf "Upload" gedrückt hat,
// werden die Dateien überprüft
if(isset($_POST['submit']) AND $_POST['submit']=='Upload'){
// jede Datei einzeln testen
for($i=0; $i<$anzahl_dateifelder; $i++){
$myFILE['name'] = $_FILES['Datei']['name'][$i];
$myFILE['type'] = $_FILES['Datei']['type'][$i];
$myFILE['tmp_name'] = $_FILES['Datei']['tmp_name'][$i];
$myFILE['error'] = $_FILES['Datei']['error'][$i];
$myFILE['size'] = $_FILES['Datei']['size'][$i];
// Fehlerarray erzeugen
$errors = array();
$errors = checkUpload($myFILE, $file_extensions, $mime_types, $maxsize);
if(count($errors)){
echo "<p>\n".
"Die ".($i+1).". Datei (".$myFILE['name'].") konnte nicht gespeichert werden.<br />\n";
foreach($errors as $error)
echo $error."<br />\n";
echo "</p>\n";
}
else {
do {
$neuer_name = renameFile($myFILE['name']);
} while(file_exists($ordner.$neuer_name));
if(@move_uploaded_file($myFILE['tmp_name'], $ordner.$neuer_name)){
echo "<p>\n".
"Die ".($i+1).". Datei (".$myFILE['name'].") wurde erfolgreich gespeichert.<br />\n".
"</p>\n";
}
else{
echo "<p>\n".
"Die Die ".($i+1).". Datei (".$myFILE['name'].") konnte nicht gespeichert werden.<br />\n".
"Es ist ein Upload-Fehler aufgetreten.<br />\n".
"Bitte versuchen Sie es später erneut.<br />\n".
"<br />\n".
"Sollte der Upload noch immer nicht funktionieren, informieren Sie uns bitte per Email.<br />\n".
"<a href=\"".$_SERVER['PHP_SELF']."\">Zurück zum Upload-Formular</a>\n".
"</p>\n";
}
}
}
echo "<p>\n".
"<a href=\"".$_SERVER['PHP_SELF']."\">Zurück zum Upload-Formular</a>\n".
"</p>\n";
}
// Beim ersten Aufruf des Skriptes wird das
// Upload-Formular angezeigt
else{
echo "<h1>Laden Sie mehrere Bilder hoch!</h1>\n";
echo "<h2>Erlaubte Dateiendungen sind:</h2>\n";
foreach($file_extensions as $extension)
echo " - ".$extension."\n<br />";
echo "<h2>Erlaubte Dateigröße:</h2>\n";
echo " - maximal ".($maxsize/(1024*1024))." MB\n<br />";
echo " <form ".
"action=\"".$_SERVER['PHP_SELF']."\" ".
"method=\"post\" ".
"enctype=\"multipart/form-data\">\n";
echo " <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"".$maxsize."\" />\n";
for($i=0; $i<$anzahl_dateifelder; $i++){
echo " <label for=\"Datei\">".($i+1).". Datei auswählen</label>\n";
echo " <input type=\"file\" name=\"Datei[".$i."]\" id=\"Datei[".$i."]\" />\n";
echo " <br />\n";
}
echo " <input type=\"submit\" name=\"submit\" value=\"Upload\" />\n";
echo " </form>\n";
}
echo "</body>\n";
echo "</html>\n";
?>
Zur besseren Orientierung habe ich die Nummer des Uploads und den Dateinamen im Fehler- bzw. Erfolgsfall bei jeder Datei erwähnt:
PHP:
<?php
echo "<p>\n".
"Die ".($i+1).". Datei (".$myFILE['name'].") konnte nicht gespeichert werden.<br />\n";
?>
Außerdem wurde der Link zurück zum Formular
PHP:
<?php
echo "<p>\n".
"<a href=\"".$_SERVER['PHP_SELF']."\">Zurück zum Upload-Formular</a>\n".
"</p>\n";
?>
hinter die for-Schleife gesetzt, denn schließlich reicht ein Link aus.
Zurück zur vorigen Seite:
PHP Dateiupload - ungünstige $_FILES-Struktur Weiter zur nächsten Seite:
PHP Dateiupload - Anmerkungen