Bildupload von meherern Bildern

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

PHP:
<?php		
if($upload)
{
	
$PicPathTemp="picturetemp/";			//Pfad zu den Bilder im Tempverzeichnis
$PicPathBild="picture/";	                          //Pfad zu den verkleinerten Thumbnails

$bildgroesse="500000";	        //Bildgröße im Byte, 500000 Byte = 500 KB ca 0,5 MB
$neueBreite="120";

for($u=0; $u < 5; $u++)
 {
$u = "$u.jpeg";

$tempname = $_FILES["file"]["tmp_name"]; 
$name = $_FILES["file"]["name"];
$type = $_FILES["file"]["type"]; 
$size = $_FILES["file"]["size"];

if($size < $bildgroesse)
	 {	  	
		//Überprüft die Dateiendung und läst nur *.jpeg und *.jpg Datein Hochladen	
		if($type != "image/jpg" && $type != "image/jpeg" && $type != "image/pjpeg" && $type != "image/pjpg")
	    {header ("Location: upload.php");}

	     else
	     {
            copy ("$tempname", "$PicPathTemp"."$u");  //kopiert das Tempbild in das verzeichnis thumbnails
            copy ("$tempname", "$PicPathBild"."$u");
			
		    // Bilddaten ermitteln
		    $size=getimagesize("$PicPathTemp"."$u"); 
		    $breite=$size[0]; 
		    $hoehe=$size[1]; 
		     
		    $neueHoehe=intval($hoehe*$neueBreite/$breite);
			if($neueHoehe > "90"){$neueHoehe="90";
			$neueBreite=intval($breite*$neueHoehe/$hoehe);}
####################################################################################################
	        if($breite>=$neueBreite)
	        {
	           		if($size[2]==2) 
		       		{ 
	           		// JPG 
	          		$altesBild=ImageCreateFromJPEG("$PicPathTemp"."$u"); 
	           		$neuesBild=imagecreatetruecolor($neueBreite,$neueHoehe); 
	           		imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe); 
	           		ImageJPEG($neuesBild,"$PicPathBild"."$u", 100); 
	         		}
	        }			
			unlink ("$PicPathTemp"."$u"); // Löscht das originalbild.
	     }
    }
 }
}
if(file_exists("$PicPathBild$u"))
{echo"<IMG SRC=\"$PicPathBild$u\">";}
else {echo "";}
?>

So dies ist mein script und das funktioniert sehr gut im moment nun würde ich es aber bevorzugen wenn ich es so machen könnte das ich 5 Dateifelder habe und nur einen Button mit dem ich alle 5 Bilder hochlade und dann in Thumbnails verkleinere so nun wie mache ich das ich habe heute schon öffters probiert das mit einer Schleife hinzubekommen aber irgendwie will das nich klappen.
Hier noch mein Dateinfeld

Code:
<form enctype="multipart/form-data" action="" method="post">
  <p> 
    <input type="file" name="file">
  </p>
  <p><font color="#FFFFFF" size="2">(optimales Format 110x150 Pixel)</font> 
      <input name="upload" type="submit" id="upload" value="Hochladen">
    </p>
</form>

Kann mir jemand helfen?
 
Hallo,
also meine Idee wäre, dass du den Steuerelementen einfach ein Index bzw. nur eckige Klammern anhängst. Folglich also:

Code:
<input name="upload" type="submit" id="upload" value="Hochladen">

In der Auswertung bleibt der jeweilige Index erhalten. Du kannst somit den alten Dateinamen des ersten Bildes also mit folgendem Code auslesen.
PHP:
$_FILES["file"]["name"][0];

Der Rest sollte sich mit einer for- oder foreach Schleife machen lassen.

Mit freundlichem Gruß
der_Maiki
 
hmm ok ich habe ich versucht aber er speicher wenn überhaupt dann immer nur das letzte Bild das ich hochlade

Noch jemand ne Idee? :rolleyes:
 
Ich will ja nicht vorlaut werden bevor ich dein Formular nicht kenne. Aber ich weis von einem Buch her, dass bei der Übergabe bereits deffiniert werden muss ob es sich um ein array handelt oder nicht. Sonst bleibt oder wird nur eins übertragen.

Die kannst du ermöglichen in dem du im Uploat Input name="file[]" schreibst! PHP weis nun nach der übergabe, dass es sich um mehrer Datenbestände (einem array) handelt.
folglich kannst du das Beispiel von der_maiki problemlos anwenden.
 
Ich habs jetzt gelöst war dann doch nicht so schwer

habs so gemacht
PHP:
$tempname = $_FILES['pic']['tmp_name'][$i];  
$name = $_FILES['pic']['name'][$i];  
$type = $_FILES['pic']['type'][$i];   
$size = $_FILES['pic']['size'][$i];
und meinen input feldern habe ich auch werte zugewiesen

Code:
<input name="pic[5]" type="file">

und dann einfach eine schleife gebaut

Code:
for($i=1;$i<6;$i++)

somit macht er mir alle einmal durch und lädt sie auf den Server verkleiner sie gleich als
Thumbnails mir 100 * 75 pixel und 200 *150 Pixel und 300 * 225 Pixel.
Und das war genau das was ich wollte

THX Leute für eure Hilfe.
 
Zurück