Insérer une image après avoir controlé taille et poids

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Insérer une image après avoir controlé taille et poids

Message le Mar Jan 09, 2007 13:47

Bonjour,

Je m'échine à essayer de permettre l'upload d'une image seulement si sa taille et son poids respectent les valeurs prévues.
Pour l'instant, j'en suis à controler le poids.

Voilà mon code sur la page du formulaire :
Code: Tout sélectionner
<form method="post" action="creation-site.php" enctype="multipart/form-data">

8/9 ) Votre photo :</b> ajoutez une photo pour renforcer votre pr&eacute;sentation (format 130px*130px et 30ko maximum).

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input type="file" name="photo" value="parcourir">

<input type="hidden" name="choix" value="2">
<input type="hidden" name="acceptation" value="ok">
<input type="submit" name="pro-gratuit-8" value="envoyer">
</form>




Et le code sur la page de réception :
Code: Tout sélectionner
//on test si il y a le fichier photo
if(is_uploaded_file($_FILES['photo']['tmp_name']))
{
//on test le poids
if( filesize($_FILES['photo']['tmp_name']) <= 30000 )
{
//si le poids est inférieur à 30ko, on l'insère
$chemin = 'visu/membres/';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name']))
{
    echo "Le fichier ".$_FILES['photo']['name'].
            " a été téléchargé avec succès dans ".$chemin;
}
;}//ferme le test du poids
//si poids >30KO, message d'erreur
else
{
echo'fichier trop gros'
;}
;}//ferme le test si le fichier est présent


Bon alors, si le fichier fait moins de 30ko, il est uploadé, je le retrouve dans le bon dossier.
Si le fichier fait plus de 30ko, alors il n'est pas uploadé, mais l'instruction du else n'est pas effectuée et le message echo'fichier trop gros' ne s'affiche pas.

J'ai essayé de modifier la valeur "MAX_FILE_SIZE" du input hidden pour être certain qu'elle soit supérieure aux fichiers de test, eux-mêmes supérieur à la valeur limite des conditions if, mais non, rien à faire, le echo n'est pas affiché.

Qui peut m'aider ?

ninive
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 147
Inscription: Mer Mar 03, 2004 11:58

Message le Mar Jan 09, 2007 14:27

Peut-être l'espace manquant entre le echo et l'apostrophe ?


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Mar Jan 09, 2007 15:19

euh non, merci Ninive, mais ca n'est pas ça.


Hoho
WRInaute passionné
WRInaute passionné
 
Messages: 515
Inscription: Mar Jan 10, 2006 1:56

Message le Mar Jan 09, 2007 16:38

Sa m'interesse aussi!!! Hop je reco.

Je cherche également un script d'upload d'images de la part des navigateurs et par la suite, de les afficher avec des pages de navigation < 1 | 2 | 3 | 4...>

Dis moi...ya moyen de controler les parametre de resolution de l'images aussi?

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Mar Jan 09, 2007 16:48

Pensez à la doc, pensez à la doc.. :wink:

-> Gestion des chargements de fichiers


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Mar Jan 09, 2007 17:00

Merci pour le lien ACth. J'ai pas l'habitude de ces histoires de serveur et franchement, je pige pas lourd.

Là j'ai utilisé var_dump($_FILES); que j'ai écrit à la première ligne du code au-dessus.


ça me donne ça, mais je pige pas :

Upload d'une image faisant moins de 30ko, soit la limite autorisée :

Code: Tout sélectionner
array(1) { ["photo"]=>  array(5) { ["name"]=>  string(10) "LXXMMI.jpg"

["type"]=>  string(10) "image/jpeg" ["tmp_name"]=>  string(14)

"/tmp/php2AhOJh" ["error"]=>  int(0) ["size"]=>  int(29212) } } Le

fichier LXXMMI.jpg a été téléchargé avec succès dans visu/membres/



Et voilà ce que ça m'affiche avec une image trop grosse :
Code: Tout sélectionner
array(1) { ["photo"]=>  array(5) { ["name"]=>  string(51)

"chancelery__front__office__s1_.jpg" ["type"]=> 

string(0) "" ["tmp_name"]=>  string(0) "" ["error"]=>  int(2) ["size"]=>


Donc, comme j'ai dit, le problème pour l'instant c'est que je n'arrive pas à afficher le message d'erreur "image trop lourde" si l'image fait plus de 30KO.

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Mar Jan 09, 2007 17:15

Il suffit de faire le test sur $_FILES['userfile']['size'] et / ou en fonction du message d'erreur.

si size trop grand et / ou error -> afficher message


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Mar Jan 09, 2007 17:32

Ok, j'avais mis une valeur trop faible pour MAX_FILE_SIZE dans le hidden.

Maintenant, il y a encore des problèmes :
- Vérifier les dimensions de l'images, pour qu'elles soient inférieures à 130*130px.
- Si l'image uploadée a un nom du genre "mon image.jpg", soit avec un espace, alors on ne la retrouve pas dans le dossier de destination.
- Je dois controler si l'image est gif ou un jpg (éventuellement png).

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Mar Jan 09, 2007 17:36

Toujours dans la doc.. chapitre images..


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Mar Jan 09, 2007 17:42

Oui mais là c'est pour créer une image. Moi je veux juste vérifier ses dimensions. Apparement ça serait plutôt à voir avec getimagesize(), non ?


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Mar Jan 09, 2007 18:02

Et ça, qu'est-ce que ça vaut (trouvé sur le net) :

Code: Tout sélectionner
if($img = imagecreatefromgif($uploadfile))
                        {
                                if((ImageSX($img) == 16) && (ImageSY($img) == 12))
                                {
                                     ok
                                }
                                else
                                {
                                        pas ok
                                }

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Mar Jan 09, 2007 18:38

Regarde bien la doc que je t'ai indiquée. Notamment au niveau de l'exemple et de la table des matières (toutes les fonctions en rapport avec les images sont listées avec une explication brève..).


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Ven Jan 12, 2007 15:15

Taratata, me revoilà eh eh !

Alors j'ai presque réussi 8-) (je sais c'est fastoche, mais bon)

Code: Tout sélectionner
//on test si il y a le fichier photo

if(is_uploaded_file($_FILES['photo']['tmp_name']))
{
  //on test le poids
  if( filesize($_FILES['photo']['tmp_name']) <= 30000 )
  {//si le poids est inférieur à 30ko, on test les dimensions et le type du fichier
$chemin = 'visu/membres/';
$chemin2=$chemin.$_FILES['photo']['name'];
list($width, $height, $type, $attr) =getimagesize($_FILES['photo']['name']);
echo" $width - $height - $type  <p> ";

$datas=getimagesize($_FILES['photo']['name']);
echo $datas['mime'];
//on va tester les dimensions et le format du fichier
if($width<130 AND $height<130 AND ($type=="image.gif" OR $type=="image.jpg"))
{
//on passe le fichier du répertoire temporaire au répertoire définitif
    if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name']))  {
      echo "Le fichier ".$_FILES['photo']['name'].
            " a été téléchargé avec succès dans ".$chemin;
      echo'<p>'
     ;}//ferme if move_uploaded_file
    ;}//ferme le test des dimensions et du format
     else { //si dimension ou format mauvais
    echo'dimension ou format mauvais'
        ;}
  ;}//ferme le test du poids
  else  { //si poids >30KO, message d'erreur
    echo'fichier trop gros'
        ;}
}//ferme le test si le fichier est présent


Bon le problème, c'est que ça m'affiche ça :
Code: Tout sélectionner
Warning: getimagesize(bonne-taille-gif.gif) [function.getimagesize]: failed to open stream: No such file or directory in /home/site/www/photo-test.php on line 148
- -


Warning: getimagesize(bonne-taille-gif.gif) [function.getimagesize]: failed to open stream: No such file or directory in /home/site/www/photo-test.php on line 151
dimension ou format mauvais


Par contre avec ce code, je n'ai pas d'erreur à l'affichage. Mais il n'est pas valable car la condition sur les dimensions et le type mime n'est pas prévue, seul l'affiche est effectué :
Code: Tout sélectionner
if(is_uploaded_file($_FILES['photo']['tmp_name']))
{
  //on test le poids
  if( filesize($_FILES['photo']['tmp_name']) <= 30000 )
  {
    //si le poids est inférieur à 30ko, on l'insère
    $chemin = 'visu/membres/';
    if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name'])) {
      echo "Le fichier ".$_FILES['photo']['name'].
            " a été téléchargé avec succès dans ".$chemin;
     echo'<p>';
list($width, $height, $type, $attr) =getimagesize("visu/membres/barre-test.gif");
echo" $width - $height - $type -$attr <p> ";

$chemin2=$chemin.$_FILES['photo']['name'];
$datas =getimagesize("$chemin2");
echo $datas[mime];

    }
  }//ferme le test du poids
  else  { //si poids >30KO, message d'erreur
    echo'fichier trop gros'
        ;}
}//ferme le test si le fichier est présent

ACth
WRInaute passionné
WRInaute passionné
 
Messages: 795
Inscription: Sam Nov 11, 2006 12:32

Message le Ven Jan 12, 2007 15:24

Quels sont les lignes 148 et 151 ?


Meeuuuhhh
WRInaute accro
WRInaute accro
 
Messages: 1795
Inscription: Lun Jan 08, 2007 21:48

Message le Ven Jan 12, 2007 15:38

Bonne question.

Ligne 148 (juste en dessous de $chemin dans le troisième if):
Code: Tout sélectionner
if (move_uploaded_file($_FILES['photo']['tmp_name'], $chemin.$_FILES['photo']['name'])) {


Ligne 151 :
Code: Tout sélectionner

$datas=getimagesize($_FILES['photo']['name']);
Dernière édition par Meeuuuhhh le Ven Jan 12, 2007 15:47, édité 1 fois.

Insérer une image après avoir controlé taille et poids

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités