IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Upload multiple et redimensionnement


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut Upload multiple et redimensionnement
    Bonjour tout le monde.

    Je suis en train d'essayer de faire un script d'upload multiple en PHP.
    Le but étant de ne pas uploader l'image, mais uniquement la miniature de l'image (car je les redimmensionne).

    Voici le code HTML (le bouton 'ajouter un fichier' rajoute un champ file)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input type='file' name='file0'>
    <input type='button' value='ajouter un fichier' onclick='ajouterchp();' />
    <input type='hidden' name='MAX_FILE_SIZE'  VALUE='2048'>
    Le code PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    if (isset($_POST['auteur']) && isset($_POST['email'])){
     
     
    	$auteur = ADDSLASHES($_POST['auteur']);
    	$categorie = ADDSLASHES($_POST['categorie']);
    	$email = ADDSLASHES($_POST['email']);
     
    	$chemin = "Upload/Gallerie";
     
     
    	require_once "Include/cnx.inc.php";
    	require_once "Include/fonctions.inc.php";
     
    	$nbPhotos = 0 ;
    	foreach ($_FILES as $value)
    	{	
     
     
    		$image = $value['tmp_name'];
    		if (est_image($image)){
     
     
    			// Redimmesionnement
    			$filename = $image;
     
     
    			list($width, $height) = getimagesize($filename); //on recup la taille de l'image original
     
     
    			if ($width > $height){ // mode paysage
     
    				if ($width > 900){
    					$newwidth = 900;
    					$newheight = (900*$height)/$width;
    				} 
    			}
    			else{ // mode portrait
    				if ($height > 700){
    					$newheight = 700;
    					$newwidth = (700*$width)/$height;
    				} 			
    			}
     
    			$img_dst = imagecreatetruecolor( $newwidth, $newheight ); //on créer l'image destination
    			$img_src = imagecreatefromjpeg($filename);
     
    			imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
     
    			imagejpeg  ( $img_dst  , "Upload/Gallerie/".$img_dst."");
     
     
    		} // Fin if est_image
     
    	} // Fin for each
     
     
    }
    ?>
    Le problème est que ca upload des fichiers sans extensions et avec des noms à coucher dehors, je ne vois pas quel est l'erreur.
    Le problème se situe probablement au niveau du redim

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    'tmp_name', comme son nom l'indique, est un nom temporaire donné par le serveur.
    Le nom d'origine du fichier est dans 'name'

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    OK je vais essayer en remplacant simplement
    $image = $value['tmp_name'];
    par
    $image = $value['name'];

    Je te tiendrais au jus

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Heu non ce n'est pas tout a fait ça : c'est juste quand tu enregistres l'image qu'il faut utiliser son nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagejpeg  ( $img_dst  , "Upload/Gallerie/".$value['name']);

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    J'ai essayé mais ca n'upload plus rien

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux nous remontrer ton code corrigé ?

    D'ailleurs puisque tu as une variable définie autant s'en servir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagejpeg  ( $img_dst  , $chemin.'/'.$value['name']);

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    J'ai mis la derniere version dans le 1er message, je la remet ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    foreach ($_FILES as $value)
    	{	
     
     
    		$image = $value['tmp_name'];
    		if (est_image($image)){
     
     
    			// Redimmesionnement
    			$filename = $image;
     
     
    			list($width, $height) = getimagesize($filename); //on recup la taille de l'image original
     
     
    			if ($width > $height){ // mode paysage
     
    				if ($width > 900){
    					$newwidth = 900;
    					$newheight = (900*$height)/$width;
    				} 
    			}
    			else{ // mode portrait
    				if ($height > 700){
    					$newheight = 700;
    					$newwidth = (700*$width)/$height;
    				} 			
    			}
     
    			$img_dst = imagecreatetruecolor( $newwidth, $newheight ); //on créer l'image destination
    			$img_src = imagecreatefromjpeg($filename);
     
    			imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
     
    			imagejpeg  ( $img_dst  , "Upload/Gallerie/".$img_dst."");
     
     
    		} // Fin if est_image
     
    	} // Fin for each

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ba tu n'as rien changé la.
    C'est $value['name'] le nom du fichier a sortir, pas $img_dst

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Mais $value['name'] c'est le fichier d'origine non redimmensionné si ?

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non $value['name'] c'est juste un nom de fichier.
    Le fichier uploadé qui existe reellement sur le serveur c'est $value['tmp_name']

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup pour ton aide mais je ne vois toujours pas quoi changer

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je te l'ai mis quelques messages plus haut.

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Oui j'ai vu Mais je ne sais pas ou changer ...

    imagejpeg ( $img_dst , "Upload/Gallerie/".$img_dst."");
    par
    imagejpeg ($value['tmp_name'] , "Upload/Gallerie/".$value['tmp_name'] ."");

    Mais $value['tmp_name'] n'est pas redimmenssionné je crois si je fais ca

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ce n'est pas ca que j'ai ecris de toute facon.

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ba tu n'as rien changé la.
    C'est $value['name'] le nom du fichier a sortir, pas $img_dst
    Je ne sais pas à quel endroit remplacer mg_dst par value['name']

  16. #16
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Hou M. Xenon on est pas frais ce matin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagejpeg  ( $img_dst  , $chemin.'/'.$value['name']);
    $img_dst c'est la ressource de l'image redimensionnée
    $chemin.'/'.$value['name'] c'est la ou on va ecrire le fichier

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Mdr c'est juste que je suis une brêle en PHP
    Je teste ca à midi et jte tient au jus

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Bon et bien après test, ca ne fonctionne pas
    Rien n'est uploadé, ni miniature ni l'image de base et je ne sais pas du tout pourquoi

    Les erreurs sont les suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Warning: getimagesize(IMG000003.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 30
     
    Notice: Undefined variable: newwidth in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 47
     
    Notice: Undefined variable: newheight in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 47
     
    Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 47
     
    Warning: imagecreatefromjpeg(IMG000003.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 48
     
    Notice: Undefined variable: newwidth in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 50
     
    Notice: Undefined variable: newheight in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 50
     
    Warning: imagecopyresized() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 50
     
    Warning: imagejpeg() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP5.3.0\www\ASG\uploadPhoto.php on line 52

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as remplacé tmp_name par name la ou il ne fallait pas.
    Je repete le 'name' ne sert qu'a la fin, quand tu crées le fichier.

  20. #20
    Membre du Club
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    bon et bien toujours rien
    J'ai pourtant tout tenté

    Dernier code en date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    foreach ($_FILES as $value)
    	{	
     
     
    		$image = $value['name'];
    				echo $image;
     
    		if (est_image($image)){
     
     
    			// Redimmesionnement
    			$filename = $image;
     
     
    			list($width, $height) = getimagesize($filename); //on recup la taille de l'image original
     
     
    			if ($width > $height){ // mode paysage
     
    				if ($width > 900){
    					$newwidth = 900;
    					$newheight = (900*$height)/$width;
    				} 
    			}
    			else{ // mode portrait
    				if ($height > 700){
    					$newheight = 700;
    					$newwidth = (700*$width)/$height;
    				} 			
    			}
     
    			$img_dst = imagecreatetruecolor( $newwidth, $newheight ); //on créer l'image destination
    			$img_src = imagecreatefromjpeg($filename);
     
    			imagecopyresized($img_dst, $img_src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
     
    			imagejpeg  ( $img_dst  , $chemin.'/'.$value['tmp_name']);
     
    			$nbPhotos ++ ;
     
    		} // Fin if est_image
     
    	} // Fin for each

Discussions similaires

  1. [Upload] Upload multiple files
    Par aymanov dans le forum Langage
    Réponses: 17
    Dernier message: 22/12/2008, 09h38
  2. [Upload] bug sur upload multiple d'envoi d'images
    Par fabien14 dans le forum Langage
    Réponses: 3
    Dernier message: 13/08/2006, 12h05
  3. [Upload] traitement upload multiples
    Par renaud26 dans le forum Langage
    Réponses: 7
    Dernier message: 23/03/2006, 19h20
  4. [demande] upload multiples
    Par pIch dans le forum Général Java
    Réponses: 6
    Dernier message: 21/07/2005, 15h47
  5. [Upload] upload multiple
    Par mat10000 dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2005, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo