PHP Bilderupload Script

Elmo

Mitglied
Hiho, ich habe folgendes Problem: beim untenstehenden Script bekomme ich immer die Meldung das das Format nicht unterstützt wird. Hat vielleicht einer eine Idee woran es liegt?

Code:
function UploadImage2(){
global $userinfo;
	$file = $_FILES['objUpload2'];
		
	if(exif_imagetype($file['tmp_name']) == 1 || exif_imagetype($file['tmp_name']) == 2 || exif_imagetype($file['tmp_name']) == 3){
		if (is_uploaded_file($file['tmp_name'])){	
			switch (exif_imagetype($file['tmp_name'])){
				case 1:
					//GIF
					$img = imagecreatefromgif($file['tmp_name']);
					break;
				case 2:
					//JPG
					$img = imagecreatefromjpeg($file['tmp_name']);
					break;
				case 3:
					//PNG
					$img = imagecreatefrompng($file['tmp_name']);
					break;
				default:
					break;
			}
			
			list($width, $height, $ctype) = getimagesize($file["tmp_name"]);
			$xscale=$width/500;
			$yscale=$height/500;
			
			if ($yscale>$xscale){
				$new_width = round($width * (1/$yscale));
				$new_height = round($height * (1/$yscale));
			}
			else {
				$new_width = round($width * (1/$xscale));
				$new_height = round($height * (1/$xscale));
			}
			
			$imgResized = imagecreatetruecolor($new_width, $new_height);
			
			$transparent = imagecolorat($img, 0,0);
			imagefill($imgResized, 0, 0, $transparent);
			imagecolortransparent($imgResized, $transparent);
			
			
			imagecopyresampled($imgResized, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
			
			
			switch (exif_imagetype($file['tmp_name'])){
				case 1:
					//GIF
					$file_name = "".$userinfo["vorname"]."_".$userinfo["name"]."_2.gif" ;
					$img = imagegif($imgResized , "uploads/".$file_name);
					break;
				case 2:
					//JPG
					$file_name = "".$userinfo["vorname"]."_".$userinfo["name"]."_2.jpg" ;
					$img = imagejpeg($imgResized , "uploads/".$file_name);
					break;
				case 3:
					//PNG
					$file_name = "".$userinfo["vorname"]."_".$userinfo["name"]."_2.png" ;
					$img = imagepng($imgResized , "uploads/".$file_name);
					break;	
			}	
			return $file_name;		
		}
		else{
			echo "An error occured when trying to create the temp image.";
		}
	}
	else{
		echo "This format is not supported. Only .gif, .jpg and .png are accepted.";
	}
}
 
Wie gesagt ich hab in der Funktion ja eine Meldung echo "This format is not supported. Only .gif, .jpg and .png are accepted.";

und die bekomme ich immer obwohl das Format unterstützt werden sollte
 
Also ich frage das Datei Format nicht mit:
PHP:
if(exif_imagetype($file['tmp_name']) == 1 || exif_imagetype($file['tmp_name']) == 2 || exif_imagetype($file['tmp_name']) == 3)
<--In dieser Abfrage steckt der Fehler!

(hier weis ich noch nicht mal was die Abfragen bringen sollen, oder zurückgeben!)

ab sondern so:
PHP:
$type = $file['type'];
if($type == "image/pjpeg" && $type == "image/jpeg")
{
       echo "jpg Dateien dürfen hochgeladen werden.";
}
Für die anderen Formate wie gif musste dir noch die Bezeichnungen raussuchen!
 
habe die funktion nun wie folgt geändert

Code:
function UploadImage1(){
global $userinfo;
global $file;

	$file = $_FILES['objUpload1'];
	$type = $file['type'];

	if($type == "image/gif" || 
	   $type == "image/jpeg" || 
	   $type == "image/png" )  
	   {
			if (is_uploaded_file($file['tmp_name'])){	
					switch ($type){
						case "image/gif":
							//GIF
							$img = imagecreatefromgif($file['tmp_name']);
							break;
						case "image/jpeg":
							//JPG
							$img = imagecreatefromjpeg($file['tmp_name']);
							break;
						case "image/png":
							//PNG
							$img = imagecreatefrompng($file['tmp_name']);
							break;
						default:
							break;
				}
			
			list($width, $height, $ctype) = getimagesize($file["tmp_name"]);
			$xscale=$width/500;
			$yscale=$height/500;
			
			if ($yscale>$xscale){
				$new_width = round($width * (1/$yscale));
				$new_height = round($height * (1/$yscale));
			}
			else {
				$new_width = round($width * (1/$xscale));
				$new_height = round($height * (1/$xscale));
			}
			
			$imgResized = imagecreatetruecolor($new_width, $new_height);
			
			$transparent = imagecolorat($img, 0,0);
			imagefill($imgResized, 0, 0, $transparent);
			imagecolortransparent($imgResized, $transparent);
			
			
			imagecopyresampled($imgResized, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
			
			
			switch ($type){
				case "image/gif":
					//GIF
					$file_name = "".$userinfo["vorname"]."_".$userinfo["name"]."_1.gif" ;
					$img = imagegif($imgResized , "uploads/".$file_name);
					break;
				case "image/jpeg":
					//JPG
					$file_name = "".$userinfo["vorname"]."_".$userinfo["name"]."_1.jpg" ;
					$img = imagejpeg($imgResized , "uploads/".$file_name);
					break;
				case "image/png":
					//PNG
					$file_name = "".$userinfo["vorname"]."_".$userinfo["name"]."_1.png" ;
					$img = imagepng($imgResized , "uploads/".$file_name);
					break;	
			}	
			return $file_name;		
		}
		else{
			echo "An error occured when trying to create the temp image.";
		}
	}
	else{
		echo "This format is not supported. Only .gif, .jpg and .png are accepted.";
	}
}

Funktioniert jedoch trotzdem nicht, nur ein png konnte ich hochladen :X
 
gif & jpeg unterstützung in php vorhanden ?

schau mal mit

<?phpinfo();?>


nach ob die 2 vorhanden sind...sollte dann im abschnitt GD so ausssehen

HTML:
GD Support            enabled
GD Version            2.0 or higher
FreeType Support      enabled
FreeType Linkage      with freetype
FreeType Version      2.2.1
T1Lib Support 	      enabled
GIF Read Support      enabled
GIF Create Support    enabled
JPG Support           enabled
PNG Support           enabled
WBMP Support          enabled
 
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XPM Support enabled
XBM Support enabled


Is alles drin :/
 
Zurück