Multiple Fileupload

sonicks

Erfahrenes Mitglied
Hallo,

Ich hab eine Galerie gecodet, die auch einwandfrei Funktioniert. Das einzigste Problem was mich nervt ist, dass man jedes Bild einzeln hochladen muss. Das stört gewaltig wenn es mal 50 Bilder oder so sind.
Jetzt habe ich mir überlegt, dass es doch irgendwie möglich ist, einen mehrfachen Bilderupload zu gestalten, wie z.B. MySpace.com oder Virb.com oder Kwick.de es haben. (Deswegen war ich mir auch nicht sicher, ob ich es hier ins PHP Forum oder ins Javascriptforum packen soll weil es dort stark nach JS bzw. Ajax ausschaut.)

Was für Möglichkeiten gibt es da und wie könnte ich das am Besten realisieren.

Hoffe auf kleine Denkanstöße ;)
 
Ich würds per .zip File machen. Also alle Bilder zippen, Archiv hochladen, mit PHP entzippen lassen.

Hatte vorher auch eine Version mit mehreren Eingabefeldern für Dateien, aber per .zip gehts schneller und man muss nur eine Datei auswählen (fürs Formular) und keine 50.
 
Da seh ich wiederum das Problem drin, dass man nicht jedes einzelne Bild in der Datenbank speichern kann bzw. dafür Beschreibung etc. speichern kann.
 
Hi,

Mehrfachauswahl bei "Durchsuchen..." geht nicht.
Entweder man erstellt sich einfach ca. 10 Inputfelder vom Typ "file" (oder alternativ mit JS neue Felder auf "Knopfdruck" erzeugen), oder man greift auf ein fertiges JavaApplet (wie bei MySpace) zurück. Ob es das kostenlos gibt, weiß ich leider nicht (einfach mal googlen).

Gruß tyg3r
 
Das mit den mehreren Inputfeldern hört sich ja recht gut an. Wird aber vermutlich n Haufen Code. Muss man ja im Prinzip für jedes einzelne Field nen copy() + DB Eintrag schreiben bzw. Array.
Nach Java Applets hab ich schon geschaut, leider nichts gefunden. Vllt hab ich auch einfach nach dem falschen gesucht. Weiß vielleicht sonst jemand eins? Wäre super.

Ansonsten probier ich das mal mit den vielen Inputfeldern...

Danke

MfG
 
Es ist nicht viel mehr Code, das $_FILES Array kann man auch in einer Schleife auslesen. Und alle eintragen lassen.

Zum Zip Upload... es geht hier auch, dann müsstest du aber noch einen zwischenschritt einbauen wo man die beschreibungen einträgt usw. Und daneben hat man ne vorschau davon ,)
 
Ok, das mit dem Java Applet habe ich mir jetzt aus dem Kopf geschlagen. Wie würde das mit dem $_FILES Array denn ungefähr aussehen?
Wäre super wenn mir da jemand einen kleinen Ansatz zeigen könnte.

Danke

MfG
 
Okay, dankeschön.

Ich hab den Grundbau jetzt auch verstanden, und mal was zusammen gestellt:

PHP:
$pfad = "Bilder/galeriepics/";    
$name1 = $_FILES['uploadfile']['name'];  
$tempname1 = $_FILES['uploadfile']['tmp_name']; 
$type1 = $_FILES['uploadfile']['type']; 
$size1 = $_FILES['uploadfile']['size'];

HTML:
<form name="form5" enctype="multipart/form-data" method="post" action="">
<input type="file" name="uploadfile[]">
<input type="file" name="uploadfile[]">
<input name="submit_up" type="submit" id="submit_up" value="Datei(en) hochladen" class="button">
</form>

Jetzt möchte ich ja jede Datei einzeln in meine Datenbank eintragen und ein Thumb davon generieren.
Mein bisheriger Code für das ganze, jedoch mit einer einzelnen Datei, sieht so aus:

PHP:
             $pfad = "Bilder/galeriepics/";    
             $name1 = $_FILES['file']['name'];  
             $tempname1 = $_FILES['file']['tmp_name']; 
             $type1 = $_FILES['file']['type']; 
             $size1 = $_FILES['file']['size']; 
	     $random = rand(1,99999); 
             $end_name = $pfad.$random.$name1;
	     $e_name = $random.$name1;
             $sub_name = $serv_url_admin.$end_name;
					   
             @copy ($tempname1,$end_name);
						    
             // Dann wird hier das Thumb erstellt...
             $size = getimagesize("$end_name");  
             $width = $size[0];  
             $height = $size[1];  

             $width_tn = 150;  
             $height_tn = intval($height * $width_tn / $width);  
     
             $picture = ImageCreateFromJPEG("$end_name");  
             $picture_tn = ImageCreateTrueColor($width_tn,$height_tn);  
             
             ImageCopyResampled($picture_tn,$picture,0,0,0,0,$width_tn,$height_tn,$width,$height);  

             $filename = explode (".", $e_name);  
             $tn = "_tn.";  

             ImageJPEG($picture_tn, $pfad.$filename[0].$tn.$filename[1],95); 
             $thumb = $serv_url_admin.$pfad.$filename[0].$tn.$filename[1];


             $eintrag_up = "INSERT INTO blog_pics (date, mid, pic, thumb) VALUES ('".time()."', '$_SESSION[user_id]', '$sub_name', '$thumb')";
		      if(@mysql_query($eintrag_up)) {
                echo "<div class=\"sub_info\">Das Bild wurde hochgeladen!</div>";
              }else{
                echo "<div class=\"sub_info\">Ein Fehler liegt vor! Wende dich an Gagga</div>";
              }

Wie muss ich das Thumbnails generieren & den DB Eintrag gestellten, dass auch jede Datei eingetragen wird. Muss ich immer
PHP:
$_FILES[uploadfile][name][0] 
$_FILES[uploadfile][size][0] 

$_FILES[uploadfile][name][1] 
$_FILES[uploadfile][size][1]
usw. verwenden? Und wie würde dass dann funktionieren wenn ich die Input Felder wirklich dynamisch durch "Input Field hinzufügen" (JS) generieren möchte?
 
Hi, nochmal ich...

Ich hab jetzt selbst mal weiterprobiert und bin eigentlich zu einem Ergebnis gekommen, dass auch funktioniert. Das heißt, die Dateien werden ALLE hochgeladen und ALLE werden auch in die Datenbank eingetragen.
Das komische ist nur, er gibt mir eine Reihe an Fehlermeldungen aus, obwohl alles wunderbar klappt.

Hier der Code:
PHP:
        for ($i = 0; $i < 6; $i ++) { 

             // Upload der Datei
             $pfad = "Bilder/galeriepics/";    
             $name1 = $_FILES['uploadfile'.$i]['name'];  
             $tempname1 = $_FILES['uploadfile'.$i]['tmp_name']; 
             $type1 = $_FILES['uploadfile'.$i]['type']; 
             $size1 = $_FILES['uploadfile'.$i]['size']; 
			 $random = rand(1,99999); 
             $end_name = $pfad.$random.$name1;
			 $e_name = $random.$name1;
             $sub_name = $serv_url_admin.$end_name;
					   
             @copy ($tempname1,$end_name);
						    
            
             // Thumbnail erstellen  
             $size = getimagesize("$end_name");  // Line 41
             $width = $size[0];  
             $height = $size[1];  

             // Breite des Thumbnails festlegen (H&ouml;he wird automatisch angepasst)  
             $width_tn = 150;  
             $height_tn = intval($height * $width_tn / $width);  // Line 47
     
             // Bei GD < 2.0.1: ImageCreateTrueColor -> ImageCreate, ImageCopyResampled -> ImageCopyResized  
             $picture = ImageCreateFromJPEG("$end_name");  
             $picture_tn = ImageCreateTrueColor($width_tn,$height_tn);  
             
             ImageCopyResampled($picture_tn,$picture,0,0,0,0,$width_tn,$height_tn,$width,$height);  

             // Endung "_tn" bei Dateiname hinzuf&uuml;gen, vor ".jgp"  
             $filename = explode (".", $e_name);  
             $tn = "_tn.";  

             // Thumbnail in $dir mit angepasstem $filename speichern, JPG Qualit&auml;t: 95  
             ImageJPEG($picture_tn, $pfad.$filename[0].$tn.$filename[1],95); // Line 60
             $thumb = $serv_url_admin.$pfad.$filename[0].$tn.$filename[1];

             // Bilder & Thumbs in DB eintragen
             $eintrag_up = "INSERT INTO galerie (date, mid, pic, thumb) VALUES ('".time()."', '$_SESSION[user_id]', '$sub_name', '$thumb')";
		      if(@mysql_query($eintrag_up)) {
                echo "<div class=\"sub_info\">Das Bild wurde hochgeladen!</div>";
              }else{
                echo "<div class=\"sub_info\">Ein Fehler liegt vor! </div>";
              } 

          }
        }

Fehlermeldungen:

Code:
Warning: getimagesize(Bilder/galeriepics/76996) [function.getimagesize]: failed to open stream: No such file or directory in /home/sonicks/html/essential/admin/galerie_index.php on line 41

Warning: Division by zero in /home/sonicks/html/essential/admin/galerie_index.php on line 47

Warning: imagecreatefromjpeg(Bilder/galeriepics/76996) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in /home/sonicks/html/essential/admin/galerie_index.php on line 50

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/sonicks/html/essential/admin/galerie_index.php on line 51

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/sonicks/html/essential/admin/galerie_index.php on line 53

Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/sonicks/html/essential/admin/galerie_index.php on line 60
 
Zurück