Upload mehrerer Files. Fehler taucht auf.

Trash

Erfahrenes Mitglied
Hallo,
ich habe ein Bildupload mit 5 Inputfeldern erstellt. Die Felder heißen new_pic1 - new_pic5. Der Code sieht so aus:

PHP:
for ($i = 1; $i < 5; $i++) 
{
$file.$i = $HTTP_POST_FILES['new_pic.$i']['tmp_name']; 
$size.$i = $HTTP_POST_FILES['new_pic.$i']['size']; 
$name.$i = $HTTP_POST_FILES['new_pic.$i']['name']; 
$type.$i = $HTTP_POST_FILES['new_pic.$i']['type']; 
$dateiname.$i = "pic.$i".$_POST['datum'];
if(eregi("(jpg|jpeg|gif)$",$name.$i)) {

if(eregi("jpg",$name.$i))
{
$dateiname.$i.=".jpg";
}
elseif (eregi("gif",$name.$i))
{
$dateiname.$i.=".gif"; 
}
else
{
$dateiname.$i.=".jpeg"; 
}

if($size.$i < 2000000 AND $size.$i != 0) { 
copy($file.$i,"upload/$dateiname.$i"); // Kopiert das Bild 
$insert = addbilder($dateiname.$i, $name.$i, $_POST['datum'], $_POST['kat_pic'], $_POST['art_pic'], $size.$i, $type.$i);
         } else { 
Infomessage("Ihr Bild ".$i." ist über 2 MB groß, oder der Server hat eine Dateigrößebegrenzung!");   
    } 
    } else { 
Infomessage("Falsche Dateiendung erlaubt sind: jpg|jpeg|gif. Aktuelle Datei: ".$name.$i.""); 
    } 
}

Nur irgendwie klappt das mit dem kopieren nicht. Ich weiß auch nicht ob die Schleife die richtige Variante ist. Danke
 
Zuletzt bearbeitet:
Also, ich würd das ganze per Array lösen:

HTML-Formular:
Code:
<form name="upload" action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="pic[]"><br>
    <input type="file" name="pic[]"><br>
    <input type="submit">
</form>
Allerdings wird das Array nicht wie erwartet angelegt. Also ein Zugriff auf

PHP:
<?php echo $pic[0][name]; ?>
wird nicht gehen. Stattdessen sieht das Array so aus:

Code:
Array
(
    [name] => Array
        (
            [0] => test.csv
            [1] => test.php
        )

    [type] => Array
        (
            [0] => application/octet-stream
            [1] => text/html
        )

    [tmp_name] => Array
        (
            [0] => E:\php\uploadtemp\php994.tmp
            [1] => E:\php\uploadtemp\php995.tmp
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
        )

    [size] => Array
        (
            [0] => 4
            [1] => 1065
        )

)
Also müsste der Zugriff aufs den Namen der ersten Datei so aussehen:
PHP:
<?php echo $pic[name][0]; ?>
Demnach sieht der PHP-Code folgendermaßen aus:

PHP:
<?
for ($i = 0; $i < 5; $i++) { 
    $file       = $_FILES['pic']['tmp_name'][$i]; 
    $size       = $_FILES['pic']['size'][$i]; 
    $name       = $_FILES['pic']['namee'][$i]; 
    $type       = $_FILES['pic']['type'][$i]; 
    $dateiname  = 'pic'.$i.$_POST['datum']; 

    if(eregi("(jpg|jpeg|gif)$",$name)) { 

        if(eregi("jpg$",$name)) {
            $dateiname .= ".jpg";
        } elseif (eregi("gif$",$name)) {
            $dateiname .= ".gif"; 
        } else {
            $dateiname .= ".jpeg";
        }

        if($size < 2000000 AND $size != 0) {
            $blnUpload = move_uploaded_file($file,'upload/'.$dateiname); // Kopiert das Bild 
            if($blnUpload) {
                // upload erfolgreich abgeschlossen
                $insert = addbilder($dateiname, $name, $_POST['datum'], $_POST['kat_pic'], $_POST['art_pic'], $size, $type);
            } else {
                // kopiervorgang fehlgeschlagen
            }
        } else {
            Infomessage("Ihr Bild ".$i." ist über 2 MB groß, oder der Server hat eine Dateigrößebegrenzung!");    
        }

    } else { 
        Infomessage("Falsche Dateiendung erlaubt sind: jpg|jpeg|gif. Aktuelle Datei: ".$name.""); 
    }
}

?>

(Hinweis: Code ist ungetestet!) ;)
 
Zurück