Frage zu Upload + Tutorial

So:

PHP:
<?php 
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name']; 
$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size'];  
if($type != "image/gif" && $type != "image/pjpeg") { 
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
}  
if(empty($err)) { 
$pfad = getcwd();
copy("$tempname", "$name");
    copy("$tempname", "$name"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 
$mailtext = "Es wurde ein neues Bild hochgeladen: http://www.server.de/test/$name";
  mail("info@mail.de", "Neuer Upload", $mailtext); 
} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
} 
?>
 
Wenn du die Felder so benennst:
HTML:
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
So kannst du dann die Daten in einer Schleife abarbeiten.
Also nimmst du dein Script her und führst dort die Aktionen sooft durch wie
du Elemente in $_FILES['userfile'] hast.
Mach dann einfach mal ein var_dump auf $_FILES, dann siehst du wie
das aufbegbaut ist.
 
wenn du das so machst, wie er beschrieben hat, sind die ganzen Files in dem Array userfile drin und du kannst sie mit einer schleife also z.B. foreach auslesen.
Für die Unterschiedlichen Dateinamen kannst du den Timestamp der UNIX-Zeit verwenden.
Achte allerdings daruf, das du in den Schleifendurchläufen auch noch eine andere sich ändernde Variable hineinpackst.
Z.B.: datei_123351646312313_wasser.jpg,
da Php bei 3 hochgeladenen Dateien allen den gleichen Timestamp gibt.
 
Waaaas? Ich verstehe nur Bahnhof. xD
Kann ich nicht einfach ein paar Zeilen in dem Script kopieren und dann läuft das? xD

Ich will doch nur, dass man statt einer Datei mehrere auf einmal hochladen kann oder von mir aus hintereinander, aber so, dass der User 10 Felder hat, wo er einen Dateipfad eingeben kann, er dann auf hochladen klickt und wartet. ^^
 
Waaaas? Ich verstehe nur Bahnhof. xD
Kann ich nicht einfach ein paar Zeilen in dem Script kopieren und dann läuft das? xD

Ich will doch nur, dass man statt einer Datei mehrere auf einmal hochladen kann oder von mir aus hintereinander, aber so, dass der User 10 Felder hat, wo er einen Dateipfad eingeben kann, er dann auf hochladen klickt und wartet. ^^

Deine erste Frage von dir verrät dich :D

Da du sagst, dass er max. 10 Dateien hochladen KANN denk ich mal du möchtest per JS direkt von einem Upload-Feld auf die Menge vom User umschalten oder? Und beim klicken und warten ist es, wenn man komplett auf Serverseitig setzt, wird nicht festgelegt wie lange Daten geschickt werden. Der Server macht es so gesehen schon automatisch und gibt einen Response zurück. Mit einer Zeitangabe, brauchst du auch AJAX.

Ich denke keiner hier im Forum würde direkt ein komplettes Script schreiben. Evtl. könntest du im JS/AJAX Unterforum mal nach einem geeigneten Thema suchen.
 
Zuletzt bearbeitet:
Du sollst es ja auch verstehen;)

Gut, nehmen wir an, wir packen den HTML-Code so auf die Seite, wieLoomes das geschrieben hat, dann hätten wir beispielswise ein Array mit:
PHP:
$_FILES { userfiles => array {
                                           1 => array {
                                                             name,file,blablubb}
                                           2 => array {
                                                             name,file,blablubb}
                                           }
                 }

Also müssen wir diese deiden Dateien nacheinander auslesen, dazu benutzen wir die for-Schleife:
PHP:
for ($i = 0; $i < 9; $i++)
{
}

Den Code für deinen Auslesen und Kopieren-Teil hast du ja schon, den packen wir nur noch in die Schleife, passen den an und sie wird 10 mal durchlaufen und der Benutzer kann 10 Dateien auf einmal hochladen.



PHP:
for ($i = 0; $i < 10; $i++)
{
$tempname = $_FILES['userfile'][$i]['tmp_name'];  
$name = $_FILES['userfile'][$i]['name'];  
$type = $_FILES['userfile'][$i]['type'];  
$size = $_FILES['userfile'][$i]['size'];   
if($type != "image/gif" && $type != "image/pjpeg") {  
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";  
}  
if($size > "15000") {  
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";  
}   
if(empty($err)) {  
$pfad = getcwd(); 
copy("$tempname", "$name"); 
    copy("$tempname", "$name");  
    echo "Die Datei $name wurde erfolgreich hochgeladen!";  
$mailtext = "Es wurde ein neues Bild hochgeladen: http://www.server.de/test/$name"; 
  mail("info@mail.de", "Neuer Upload", $mailtext);  
}  
else {  
    foreach($err as $error)  
    echo "$error<br>";  
} 
}
 
Also, die HTML-Seite sieht jetzt so aus:

HTML:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Neue Seite 1</title>
</head>

<body>

<form enctype="multipart/form-data" action="upload.php" method="post"> 
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" />
<input name="userfile[]" type="file" /><br> 
<input type="submit" value="hochladen"> 
</form></body>

</html>



Die upload-Datei sieht so aus:

PHP:
<?php 
for ($i = 0; $i < 10; $i++)
{
$tempname = $_FILES['userfile'][$i]['tmp_name'];  
$name = $_FILES['userfile'][$i]['name'];  
$type = $_FILES['userfile'][$i]['type'];  
$size = $_FILES['userfile'][$i]['size'];   
if($type != "image/gif" && $type != "image/pjpeg") {  
    $err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";  
}  
if($size > "15000") {  
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";  
}   
if(empty($err)) {  
$pfad = getcwd(); 
copy("$tempname", "$name"); 
    copy("$tempname", "$name");  
    echo "Die Datei $name wurde erfolgreich hochgeladen!";  
$mailtext = "Es wurde ein neues Bild hochgeladen: http://www.server.de/test/$name"; 
  mail("info@mail.de", "Neuer Upload", $mailtext);  
}  
else {  
    foreach($err as $error)  
    echo "$error<br>";  
} 
}  
?>


Da lege ich nun drei Dateien in das Formular und bekomme folgendes angezeigt:

nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.
nur gif und jpeg Dateien dürfen hochgeladen werden.

:confused::confused::confused::confused::confused::confused::confused:
 
Da du sagst, dass er max. 10 Dateien hochladen KANN denk ich mal du möchtest per JS direkt von einem Upload-Feld auf die Menge vom User umschalten oder?

Ähm, bei dem Uploadfeld sollen 10 Felder sein, wo der User die Pfade der Dateien zum hochladen angeben kann, 10 damit es nicht stundenlang arbeitet.
Von mir aus kann der User das Scrippt 100 mal ausführen und 1000 Dateien hochladen xD
 
Arrays fangen intern immer mit 0 (Null) an zu zählen.
Du hast 5 Felder, also bracuhst du auch 5 Schleifendurchläufe.
Also darf $i nur bis höchstens 4 gehen, demnach:
PHP:
for ($i = 0; $i < 4; $i++)
Meins war auch nur ein grobes Beispiel, du musst auch prüfen, ob in dem Feld eine Datei drin ist und gegebenenfalls das Feld auslassen.
 
Zurück