mehrere Bilder Upload

Denfie

Mitglied
Hiho,
ich kenn mich nun schon ziemlich gut mit PHP aus und bin gerade dabei eine PHP-Datei zu schreiben die es erlaubt mehrere Bilder mit hilfe von JavaScript hochzuladen. Das Problem dabei ist, wie bekomm ich das am besten hin, dass er das hochzuladene Bild auf eine bestimmte Größe anpasst und diese neue Datei dann erst auf den Server speichert.

Falls ich mich undeutlich ausgedrückt habe unten eine kleine Erklärung als Tree.

PHP-Datei:
->Bild eingefügt
__|-> Größe in KB und Breite + Höhe ermitteln
__|-> Feststellung die Breite ist größer als 600px
__|-> Bilddatei ohne Verlust auf 600px komprimieren
____|-> Die neu erstellte Datei uploaden und vermerkt in der Datenbank tätigen
__|-> Diesen Vorgang solange wiederholen bis alle Bilder abgearbeitet sind.

Das Problem dabei ich schaff es auf eine Bilddatei auf dem Server zuzugreifen und diese zu verändern jedoch gelingt es nicht auf eine TMP-Bilddatei beim hochladen. Der Server auf dem die Datei hochgeladen wird erlaubt auch nur eine Maximale Größe der Datei von 1MB somit kann ich keine 3 MB Bilder hochladen und dann umschreiben. Dies sollte somit vor dem Hochladen passieren. Da PHP eine Server gebundene Sprache ist kann ich somit erst wirklich damit arbeiten wenn die Datei schon oben ist.
Vielleicht gibt es jedoch ein kleines Hintertürchen um dieses Problem umgehen zu können. Würde mich über eine Antwort freuen...
 
Wie Du schon weisst, ist PHP Server-Seitig - das heisst, Du kannst definitiv nicht auf Daten des Clients auf seiner Maschine zugreifen - auch nicht mit Javascript, und Nein, es gibt da auch keine Hintertüre (wäre auch Fatal,wenn man auf dem Client an Daten so einfach rankäme). Du wirst also Deinen Webspace erweitern müssen,um die Bilder auf dem Server in der Grösse zu reduzieren oder die Clients müssen eben damit leben,dass sie das selbst machen müssen.

LG
Andy
 
Nun nochmal ich ich,
also das mit der Erweiterung ist nicht gerade so leicht, denn die Seite läuft über nen freien Webspace-Server und die erlauben nun mal leider nur Upload von 1 MB pro file. Hab leider keinen Server den ich benutzen könnte um die Daten dorthin umzuleiten per PHP zu ändern und dann wieder an den freien Webspace zusenden. Würde auch mit der Zeit sicherlich ziemlich zeit intensiv. Könnte trotzdem wer mal schnell über den Code schauen damit ich weiß ob ich wenigstens auf dem richtigen Weg wäre...

PHP:
switch($_GET['func'])
  {
   case 'n_pic':
   {
    $db_n_pic = new db();
	 for ($i = 0; $i < count($HTTP_POST_FILES["userfile"]["tmp_name"]); $i++) {
      if (is_uploaded_file($HTTP_POST_FILES["userfile"]["tmp_name"][$i])) {
	   $sql_n_pic = "SELECT * FROM ".$Config_dbprefix."gallery WHERE zeit='".$HTTP_POST_VARS["datum"][$i]."' ";
	   $erg_n_pic = $db_n_pic->execute($sql_n_pic);
	   if($db_n_pic->num_row() == 0)
	    {
         $datei_pfad = $_POST["folder_name"] . "/" . $HTTP_POST_VARS["datum"][$i];
         $datei_in = $HTTP_POST_FILES["userfile"]["tmp_name"][$i];
		 
		  list($width, $height) = getimagesize($datei_in);

			$const_size = 600;
            if( ($width/$height) > 1)
				{
 					$new_width = $const_size;
					$new_height = (($height*$const_size)/$width);
				}else{
 					$new_width = (($width*$const_size)/$height);
 					$new_height = $const_size;
				}
		  
		  $image_p = imagecreatetruecolor($new_width, $new_height);

			switch($HTTP_POST_FILES["userfile"]["type"][$i])
			{
			 case 'image/jpeg':
  				{
					$image = imagecreatefromjpeg($filename);
  					imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
   					imagejpeg($image_p, $datei_pfad."jpg" , 100);
  				};break;
   
  			 case 'image/gif':
  				{
					$image = imagecreatefromgif($filename);
   					imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
					imagegif($image_p, $datei_pfad."gif" , 100);
  				};break;
   
  			 case 'image/png':
  				{
  					$image = imagecreatefrompng($filename);
   					imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
   					imagepng($image_p, $datei_pfad."png" , 100);
  				};break;
			}  
		 
	    }else{
	    }
	 $sql_n_pic = "INSERT INTO ".$Config_dbprefix."gallery (fid, p_name, p_title, zeit)
            VALUES
             (
			  '".$_POST["folder_name"]."',
			  '".$HTTP_POST_VARS["datum"][$i]."',
			  '".$HTTP_POST_VARS["filetitle"][$i]."',
			  '".$HTTP_POST_VARS["datum"][$i]."'
			 ); ";
     }
    }
   };break;
   
   default:
   {
   };
  }
 
Zuletzt bearbeitet:
Zurück