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 :

[FTP] Expédier une photo dans un fichier et contrôler ses dimensions et son poids


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Par défaut [FTP] Expédier une photo dans un fichier et contrôler ses dimensions et son poids
    Bonjour,

    Je viens de survoler le tuto sur l'enregistrement des images, donc apparement la bonne solution c'est de les stocker dans un dossier et puis d'expédier seulement l'adresse de la photo dans la base, dans un champs varchar.

    Bon.

    Mais alors j'ai jamais bossé ni avec les fichiers ni avec les images

    Donc en fait, comment je fais pour :

    1) contrôler le format (.jpg obligatoire, éventuellement gif, ou png).
    2) contrôler le poids (par exemple 20ko maxi).
    3) contrôler les dimensions (par exemple 130*130)
    4) vérifier que tout est bon
    5) si c'est bon, comment j'envoie la photo dans le fichier ? Il faut que je la nomme, à priori avec l'id du client et puis je reconstruit l'url et l'envoie dans la base.

    C'est ça ?

    J'attend votre aide pour ces étapes parce que je ne vois pas du tout comment faire.

    Merci d'avance et bonne année au passage

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Alors dans l'ordre :
    1. Tu peux vérifier l'extension (Comment tester l'extension d'un fichier ?) mais c'est pas sur à 100% vu que l'on peut facilement modifier une extension. Donc il reste la solution : Comment récupérer le type d'un fichier ? à associer éventuellement à image_ type_ to_ extension
    2. Son poids : tu as le formulaire pour le faire : Le contrôle de choix de fichier : <input type="file" />
    3. Les dimensions avec GD : getimagesize
    4. Que tout est bon je vois pas ce que tu veux dire
    5. Tu envoies dans le fichier, je comprends pas non plus. Tu veux certainement dire que tu places l'image dans le bon répertoire, dans ce cas : Comment envoyer un fichier depuis le navigateur sur le serveur à travers un formulaire HTML ? Tu pourras aussi renommer
    Comme quoi, une petite recherche sur developpez et on trouve tout

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Par défaut
    Salut Kerod et merci de ta réponse,

    Alors j'ai envie de commencer par controler le poids.

    J'ai donc ramassé cette fonction, quelque part dans un obscure coin du net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     $buffer = '';
    if($fd = fopen ($avata), "r")) {
        while (!feof($fd)) {
            $buffer .= fgets($fd, 4096);
        }
        fclose ($fd);
     
    $size = strlen($buffer);
    Mais ça me va pas.

    Ce que je veux en fait, c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(poids de la photo < 30ko AND taille de la photo < 130px*130px)
    {on insère l'image dans un fichier;}
    else
    {echo 'la photo doit faire moins de 30ko et 130px de coté' ;}
    Mais voilà, je rame quelque peu avec les deux conditions, du moins la première (le poids) puisque pour l'instant je suis bloqué à ce niveau.

  4. #4
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    JE me permet de faire un copier coller direct d'un jeu PHP à moi où je demande a l'utilisateur d'envoyer une image comme tag de clan en 16*12 :

    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
     
                    $uploadfile = $uploaddir.$_SESSION['user']['clan_user'].'.gif';
     
                    if(file_exists($uploadfile)) unlink($uploadfile);
                    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) 
                    {
                            if($img = imagecreatefromgif($uploadfile))
                            {
                                    if((ImageSX($img) == 16) && (ImageSY($img) == 12))
                                    {
                                            $texte .= '<center><h3>Votre nouveau tag <img src="'.$uploadfile.'" border="0"> à bien été enregistrée !</h3><br><br><a href="./index.php">Retour a l\'accueil</a></center>';
                                    }
                                    else
                                    {
                                            $texte .= '<center>Votre image ne respecte pas les dimensions ! Pour rappel, c\'est 16 pixels en largeur pour 12 en hauteur.<br><br><a href="./up_tag.php">Recommencer</a></center>';
                                            unlink($uploadfile);
                                    }
                            }
                            else
                            {
                                    $texte .= '<center>Fotre fichier n\'est pas d\'un format valide ! <br><br><a href="./up_tag.php">Recommencer</a></center>';
                                    unlink($uploadfile);
                            }
                    } 
                    else 
                    {
                       $texte .= 'Le fichier est suspect et a été refusé ! ';
                    }
    Donc c'est du nature et brut de pomme, textes du jeu y compris !

    EDIT : pour la compréhension au niveau du nom du fichier, je me suis pas fait chier, <id_clan>.gif. De la sorte, je suis sur de ne pas avoir de doublons dans les noms et je me fait pas chier a stocké de nom de fichier dans ma BDD, l'id suffisant.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Par défaut
    Bon alors, je me réveille et je reviens sur le problème.

    Merci Gloubi pour ton bout de code... auquel je pige pas lourd mais bon.

    Déjà, j'essaie d'afficher le poids de l'image, je fais ça :

    Sur la page avec le bouton parcourir, on m'a dit de rajouter la parti enctype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form method="post" action="creation-site.php" enctype="multipart/form-data">
    <input type="file" name="photo" value="parcourir">
    </form>
    Ca c'est sur la page de réception, j'essaie juste d'afficher le poids :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $photo=filesize($_FILES['photo']);
    echo ''.$photo.'';
    Et j'obtiens sur cette même page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: filesize() [function.filesize]: Stat failed for Array (errno=2 - No such file or directory) in

  6. #6
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Si tu veux que ton images soit de dimension données (que ça soit une valeur exact ou un interval), oublie le poid de l'image !
    Il existe une extension nomé gd2 qui est faite exprès pour ça ! prend le temps d'analyser mon code (il est actuellement en prod donc garanti 100% opérationnel), d'autant que ça te resservira un jour !

  7. #7
    Membre éprouvé Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Par défaut
    c'est parce que $_FILES['photo'] est un tableau

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WB20] Envoyer une photo dans un fichier de données
    Par mimi1255 dans le forum WebDev
    Réponses: 4
    Dernier message: 19/01/2015, 15h41
  2. enregistrer une image dans un fichier sous FTP
    Par briza dans le forum Langage
    Réponses: 6
    Dernier message: 07/05/2014, 17h50
  3. Réponses: 13
    Dernier message: 14/06/2003, 22h15
  4. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30
  5. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23

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