Upload mais pas plus de 200 ou 300k ??

Petit nouveau ! | 3 Messages

20 juin 2011, 04:32

Bonjour à tous !

J'ai fais le code ci-dessous (je suis débutant effectivement haha), il upload, renomme et resize en 5 thumbnails mais ne fonctionne pas avec les images de plus de 200 ou 300k..... Est-ce que quelqu'un voit ou est le problème ?

Ma valeur Max_file est pourtant beaucoup plus haute .. Le résultat d'un upload de fichier de 1M est soit une page blanche, soit que l'upload n'abouti pas...

Merci !!!!!


<?php

//Ouverture de la session 
    session_start() ;

// Connexion a la base
	$db = mysql_connect('localhost', 'user', 'passe')  or die('Erreur de connexion '.mysql_error());

// Selection de la base  
    mysql_select_db('MABD',$db)  or die('Erreur de selection '.mysql_error());  

		$sql = "select * from MATABLE where user='".$_SESSION["user"]."'";
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		$data = mysql_fetch_assoc($req);
		
//Variables
		$dossier = '../../img/p/';
		$home = '-home' ;
		$medium = '-medium' ;
		$large = '-large' ;
		$small = '-small' ;
		$thickbox = '-thickbox' ;
		$watermark = '-watermark' ;
		$point = '.jpg' ;
		$tiret = '-';
		$product = $_POST["id_product"];
		$image = $_POST["id_image"];



		$fichier = basename($_FILES['image']['name']);
		$taille_maxi = 3000000;
		$taille = filesize($_FILES['image']['tmp_name']);
		$extensions = array('.png', '.gif', '.jpg', '.jpeg');
		$extension = strrchr($_FILES['image']['name'], '.'); 


//Début des vérifications de sécurité...
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
   	    $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
}
		if($taille>$taille_maxi)
{
       $erreur = 'Le fichier est trop gros...';
}
		if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{

//Je formate le nom du fichier ...
  		   $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
       $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     
     
     
       if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $product.$tiret.$image.$point)) 
 			
    
{


//RESIZE LES IMAGES

// La hauteur des nouvelles images thumbnail 
 		$size = 129; //home
 		$size1 = 45; //small
 		$size2 = 80; //medium
		$size3 = 300; //large
		$size4 = 768; //watermark
    	        $size5 = 600; //thickbox


  		$filedir = $dossier; // Le dossier de l'image original (redirige sur le dossier en haut)
 	 
 	    $thumbdir = $dossier; // L'endroit ou je veux la nouvelle image (rien car dans le meme dossier)
	
    	$maxfile = $taille_maxi ; 
    	$mode = '0777'; 
    
    	$userfile_name =$product.$tiret.$image.$point; 
	$userfile_tmp = $_FILES['image']['tmp_name']; 
  	$userfile_size = $_FILES['image']['size']; 
  	$userfile_type = $_FILES['image']['type']; 
     
    if (isset($_FILES['image']['name']))  
    { 
    
//Renomme l'image téléchargé en $prod_img
        $prod_img = $filedir.$userfile_name; 

//Renomme l'image pour le prochain thumbnail
        $prod_img_thumb = $thumbdir.$product.$tiret.$image.$home.$point; 
        $prod_img_thumb1 = $thumbdir.$product.$tiret.$image.$small.$point; 
        $prod_img_thumb2 = $thumbdir.$product.$tiret.$image.$medium.$point; 
        $prod_img_thumb3 = $thumbdir.$product.$tiret.$image.$large.$point; 
        $prod_img_thumb4 = $thumbdir.$product.$tiret.$image.$watermark.$point; 
        $prod_img_thumb5 = $thumbdir.$product.$tiret.$image.$thickbox.$point; 
        
// rien a changer.. move file original..
        move_uploaded_file($userfile_tmp, $prod_img); 
        chmod ($prod_img, octdec($mode)); 

// récupère les dimensions de l'image originale
        $sizes = getimagesize($prod_img); 

//Garder le ratio original
        $aspect_ratio = $sizes[1]/$sizes[0];  

        if ($sizes[1] <= $size) 
        { 
            $new_width = $sizes[0]; 
            $new_height = $sizes[1]; 
        }else{ 
            $new_height = $size; 
            $new_width = abs($new_height/$aspect_ratio); 
            
            $new_height1 = $size1; 
            $new_width1 = abs($new_height/$aspect_ratio); 
            
            $new_height2 = $size2; 
            $new_width2 = abs($new_height/$aspect_ratio); 
            
            $new_height3 = $size3; 
            $new_width3 = abs($new_height/$aspect_ratio); 
            
            $new_height4 = $size4; 
            $new_width4 = abs($new_height/$aspect_ratio); 
            
            $new_height5 = $size5; 
            $new_width5 = abs($new_height/$aspect_ratio); 
        } 

        $destimg=ImageCreateTrueColor($new_width,$new_height) or die('L\'image n\'a pas pu être replacée. Référence :   146'); 
        $srcimg=ImageCreateFromJPEG($prod_img) or die('L\'image n\'a pas pu être trouvée. Référence :   146'); 
        ImageCopyResized($destimg,$srcimg,0,0,0,0,$new_width,$new_height,ImageSX($srcimg),ImageSY($srcimg)) or die('L\'image n\'a pas pu être redimensionnée. Référence :   146'); 
        ImageJPEG($destimg,$prod_img_thumb,90) or die('L\'image n\'a pas pu être sauvegardée. Référence :   146'); 
        imagedestroy($destimg); 
        
        $destimg1=ImageCreateTrueColor($new_width1,$new_height1) or die('L\'image n\'a pas pu être replacée. Référence :   146'); 
        $srcimg1=ImageCreateFromJPEG($prod_img) or die('L\'image n\'a pas pu être trouvée. Référence :   146'); 
        ImageCopyResized($destimg1,$srcimg1,0,0,0,0,$new_width1,$new_height1,ImageSX($srcimg1),ImageSY($srcimg1)) or die('L\'image n\'a pas pu être redimensionnée. Référence :   146'); 
        ImageJPEG($destimg1,$prod_img_thumb1,90) or die('L\'image n\'a pas pu être sauvegardée. Référence :   146'); 
        imagedestroy($destimg1); 
        
        $destimg2=ImageCreateTrueColor($new_width2,$new_height2) or die('L\'image n\'a pas pu être replacée. Référence :   146'); 
        $srcimg2=ImageCreateFromJPEG($prod_img) or die('L\'image n\'a pas pu être trouvée. Référence :   146'); 
        ImageCopyResized($destimg2,$srcimg2,0,0,0,0,$new_width2,$new_height2,ImageSX($srcimg2),ImageSY($srcimg2)) or die('L\'image n\'a pas pu être redimensionnée. Référence :   146'); 
        ImageJPEG($destimg2,$prod_img_thumb2,90) or die('L\'image n\'a pas pu être sauvegardée. Référence :   146'); 
        imagedestroy($destimg2); 
        
        $destimg3=ImageCreateTrueColor($new_width3,$new_height3) or die('L\'image n\'a pas pu être replacée. Référence :   146'); 
        $srcimg3=ImageCreateFromJPEG($prod_img) or die('L\'image n\'a pas pu être trouvée. Référence :   146'); 
        ImageCopyResized($destimg3,$srcimg3,0,0,0,0,$new_width3,$new_height3,ImageSX($srcimg3),ImageSY($srcimg3)) or die('L\'image n\'a pas pu être redimensionnée. Référence :   146'); 
        ImageJPEG($destimg3,$prod_img_thumb3,90) or die('L\'image n\'a pas pu être sauvegardée. Référence :   146'); 
        imagedestroy($destimg3); 
        
        $destimg4=ImageCreateTrueColor($new_width4,$new_height4) or die('L\'image n\'a pas pu être replacée. Référence :   146'); 
        $srcimg4=ImageCreateFromJPEG($prod_img) or die('L\'image n\'a pas pu être trouvée. Référence :   146'); 
        ImageCopyResized($destimg4,$srcimg4,0,0,0,0,$new_width4,$new_height4,ImageSX($srcimg4),ImageSY($srcimg4)) or die('L\'image n\'a pas pu être redimensionnée. Référence :   146'); 
        ImageJPEG($destimg4,$prod_img_thumb4,90) or die('L\'image n\'a pas pu être sauvegardée. Référence :   146'); 
        imagedestroy($destimg4); 
        
        $destimg5=ImageCreateTrueColor($new_width5,$new_height5) or die('L\'image n\'a pas pu être replacée. Référence :   146'); 
        $srcimg5=ImageCreateFromJPEG($prod_img) or die('L\'image n\'a pas pu être trouvée. Référence :   146'); 
        ImageCopyResized($destimg5,$srcimg5,0,0,0,0,$new_width5,$new_height5,ImageSX($srcimg5),ImageSY($srcimg5)) or die('L\'image n\'a pas pu être redimensionnée. Référence :   146'); 
        ImageJPEG($destimg5,$prod_img_thumb5,90) or die('L\'image n\'a pas pu être sauvegardée. Référence :   146'); 
        imagedestroy($destimg5); 
    } 

    	  	    echo 'Le remplacement de l\'image est terminée !';
    			echo " <br> <table align=center><a href=\"../fiche.php\">Retourner à votre fiche en cliquant ici </a> <br>        " ;

     }
     
     
    			else //Sinon (la fonction renvoie FALSE).
     {
        		echo 'Le remplacement n\'a pas fonctionné. Contactez-nous si le problème persiste.  Référence :  192';
     }
}
else
{
    			 echo $erreur;
}


?>

ViPHP
xTG
ViPHP | 7331 Messages

20 juin 2011, 07:51

Et concernant la configuration du php.ini ?
Il y a deux valeurs à configurer : max_upload_size et max_post_size il me semble pour les noms.

Petit nouveau ! | 3 Messages

20 juin 2011, 15:09

Oui effectivement j'ai vérifié mais upload_max_filesize est présentement à 256M et post_max_sixe est à 128M....

kiiks1
Invité n'ayant pas de compte PHPfrance

22 juin 2011, 18:19

Personne n'a d'idées comment régler ce problème ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 juin 2011, 19:41

hum globalement :
- tu autorise les fichiers png, gif, jpg mais tu ne fait que des imagecreatefromjpeg, donc dans 2 cas sur 3 y a une erreur !
- il y a deux move_uploaded_file (ligne 58 et 102), cela me semble assez étonnant que tu n'ai pas de message d'erreurs.
- pourquoi ne pas avoir fait une fonction avec le redimensionnement afin d'alléger le code ?
- a tu fait un var_dump($_FILES); afin de voir ce qu'il y a dedans ? (et surtout qu'elle est la valeur de $_FILES['image']['error'], si différent de zéro il y a un soucis => explication http://fr2.php.net/manual/fr/features.f ... errors.php )

affiche les différentes variables (avec var_dump par exemple) utilise des if a outrance pour être certain de toute les actions (et traiter correctement les erreurs plutôt qu'avec des or die). Avec ça tu pourra suivre le déroulement de ton code.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 3 Messages

27 juin 2011, 02:43

Merci je regarde ca et je donne des nouvelles si ca peux aider quelqu'un par la suite ;)