Page 1 sur 1

Bug avec Internet explorer 7 sur upload et copy d'image

Posté : 12 févr. 2008, 04:11
par stefane321
Bonjour,

J'ai un bug étrange.

J'ai un script qui upload une photo et en fait une copie redimensionné dans deux répertoire img_prod et img_prod/icones dans icones c'est les imagettes permettant que la page ne soit pas trop lourde.

Vous verrez qu'au départ l'image est envoyé dans un répertoire temporaire ceci afin que je puisse redimensionner l'image original même pour l'image qui sera utiliser pour visualisation plein écran quand l'utilisateur cliquera sur l'imagette.

Je fait celà car aujourd'hui les photos prise avec les appareils numérique sont lourde et grande inutilement poyr le Web.

Mon problème est que la copy dans le répertoire icones ne se fait pas quand l'utilisateur du script utilise Internet explorer 7.

Avec Firefox sa marche.

Avec Internet explorer 6 sa marche.

Mais pas avec Internet explorer 7.

Pouvez-vous m'aider svp?

Voici le code:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/jpeg")
	{	
	
		$extptmp = explode(".",$_FILES["images"]['name']);	
		//------------------------------------------------------------------
		
		$car_speciaux = array( ' ','À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'È', 'É', 'Ê', 'Ë', 'è', 'é', 'ê', 'ë', 'Ì', 'Í', 'Î', 'Ï', 'ì', 'í', 'î', 'ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'Ù', 'Ú', 'Û', 'Ü', 'ù', 'ú', 'û', 'ü', 'ß', 'Ç', 'ç', 'Ð', 'ð', 'Ñ', 'ñ', 'Þ', 'þ', 'Ý' );
		$car_normaux  = array( '_','A', 'A', 'A', 'A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'E', 'E', 'E', 'E', 'e', 'e', 'e', 'e', 'I', 'I', 'I', 'I', 'i', 'i', 'i', 'i', 'O', 'O', 'O', 'O', 'O', 'O', 'o', 'o', 'o', 'o', 'o', 'o', 'U', 'U', 'U', 'U', 'u', 'u', 'u', 'u', 'B', 'C', 'c', 'D', 'd', 'N', 'n', 'P', 'p', 'Y' ); 
		$_FILES["images"]['name'] = str_replace($car_speciaux, $car_normaux, utf8_encode($_FILES["images"]['name']));  
				
		//------------------------------------------------------------------	
		if(is_uploaded_file($_FILES["images"]['tmp_name'])) 
		{
		//---------------------------------------------------------------------------------------
		move_uploaded_file($_FILES["images"]['tmp_name'], "".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name']."");
		$size = getimagesize("".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name']."") or die("getimagesize erreur");
    
		$newwidth=resize_images(1000, 1000, "".$url_racine."/photos/img_prod/tmp/".$_FILES["images"]['name']."") or die("rezine width erreur");

		$src_img = imagecreatefromjpeg("".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name']."") or die("imagecreatefromjpg erreur");
		$dst_img = imagecreatetruecolor ($newwidth[0],$newwidth[1]) or die("createtruecolor erreur");

		imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newwidth[0],$newwidth[1], $size[0], $size[1]) or die("imagecopyresampled erreur"); // la fonction qui redimensionne les photos
		imagejpeg($dst_img, "".$pathImg."photos/img_prod/".$_FILES["images"]['name']."", 60) or die("imagejpg erreur");
		imagedestroy($src_img) or die("destroy src_img erreur");
		imagedestroy($dst_img) or die("destroy dest_img erreur"); 
		//-----------------------------------------------------------------------------------------
			 
			$sqlup = "UPDATE photos SET image=\"".$_FILES["images"]['name']."\" where id=".$id."";
			$conn = mysql_connect($host, $login, $password) or die ("Erreur de connection");
			mysql_select_db($db) or die("erreur de DB");
			$rsup = mysql_query($sqlup) or die ($sqlup);
			mysql_close($conn);
			chmod("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."", 0644);
			////chown("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."", village);
		//--------------------------------------------------------------------------------------------
	$size = getimagesize("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."") or die("getimagesize erreur");
    
	$newwidth=resize_images2(200, 200, "".$url_racine."/photos/img_prod/".$_FILES["images"]['name']."") or die("rezine width erreur");

    $src_img = imagecreatefromjpeg("".$pathImg."photos/img_prod/".$_FILES["images"]['name']."") or die("imagecreatefromjpg erreur");
    $dst_img = imagecreatetruecolor ($newwidth[0],$newwidth[1]) or die("createtruecolor erreur");

    imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $newwidth[0],$newwidth[1], $size[0], $size[1]) or die("imagecopyresampled erreur"); // la fonction qui redimensionne les photos
    imagejpeg($dst_img, "".$pathImg."photos/img_prod/icones/".$_FILES["images"]['name']."", 60) or die("imagejpg erreur");
    imagedestroy($src_img) or die("destroy src_img erreur");
    imagedestroy($dst_img) or die("destroy dest_img erreur");    
//Creation des icones
	$delete_file=unlink("".$pathImg."photos/img_prod/tmp/".$_FILES["images"]['name'].""); 		
		}
	}

Posté : 12 févr. 2008, 09:50
par zeus
"Ca ne marche pas" ne nous est d'aucune aide pour t'apporter un chemin vers la résolution de ton problème ;)

Que se passe-t-il réellement ? message d'erreur ?

Posté : 12 févr. 2008, 12:01
par AB
Comme l'a déjà dit Zeus, il nous faudrait plus de précisions concernant le fait que cela ne marche pas.

Par ailleurs tu ne nous montres que du code PHP. Et ce n'est pas celui-ci qui va faire une différence entre les différents navigateurs puisque ce code n'est pas interprété par les navigateurs mais par le serveur...

Cela pourrait plus probablement venir de la partie html.

Posté : 12 févr. 2008, 13:01
par rebaj83
Hmm çà serait pas une histoire de $_FILES["images"]["type"]=="image/jpeg" qui est en fait $_FILES["images"]["type"]=="image/jpg" sous IE?

Il me semble qu'il y a une différence du type mime envoyé par le formulaire.

Teste sans la verif JPG pour voir si c'est ca.

Posté : 12 févr. 2008, 15:35
par stefane321
Se qui ne marche pas je l,avais écrit:
Mon problème est que la copy dans le répertoire icones ne se fait pas quand l'utilisateur du script utilise Internet explorer 7.
Le upload fonctionne dans le répertoire temporaire.

La copy avec imagejpeg du répertoire temporaire vers le répertoire img_prod fonctionne.

MAIS .... la création de la copie avec imagejpeg du répertoire temporaire vers le répertoire img_prod/icones ne se fait pas.

Je sais, c'est pas sencer être a cause du navigateur car le code est exécuté sur le serveur.

Voici mon code html:

<form name="ajout_produits" method="post" action="photos/ajout_photos.php" enctype="multipart/form-data">
<tr>
<td>Image :</td>
</tr>
<tr>
<td><input type="file" name="images" ></td>
</tr>
Merci

Posté : 14 févr. 2008, 04:54
par stefane321
Oui, il semble effectivement que le bug soit du a la vérification jpeg.

Cependant, sa ma pas en remplaçant jpeg par jpg

Posté : 14 févr. 2008, 05:21
par stefane321
Bug réglé.

Je déteste Internet explorer.

Pour internet explorer il ne faut pas mettre:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/jpeg")
Mais plutôt:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/pjpeg")
Vous voyez le p de plus.

pjpeg au lieu de jpeg

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Cependant, lèa faut que je mette une condition pour Firefox parce que pjpeg sa marche pas avec Firefox.

Comme celà:
if($_FILES["images"]['name'] <> "" && $_FILES["images"]["type"]=="image/pjpeg") ||  $_FILES["images"]["type"]=="image/jpeg"