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] uploader image sur serveur


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut [Upload] uploader image sur serveur
    Bonjour je cherche à uploader des images dans un repertoire d'images présent sur mon serveur local, mais également je cherche en même temps alimenter une tables "images" présente dans ma base de données avec les champs suivants id, image, size, titre. Je sais qu'il ne faut pas stocker l'image dans la base mais seulement le chemin relative mais je ne sais pas comment faire. C'est pour cette raison que je fais appel à vous.

    Voici le code de mon formulaire

    Code html : 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
     
    <form action="ajout_image.php" method="get" enctype="multipart/form-data" onSubmit="return checkForm(this)">
    <!-- On limite le fichier à 400ko-->
    <input type="hidden" name="MAX_FILE_SIZE" value="400000" />
     <table width="301" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td width="60" class="textes">Image :</td>
    	  <td width="241"><input type="file" name="fichier" /></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr> 
          <td valign="top" class='textes'>Titre : </td>
    	  <td><input type="text" name="titre" /></td>
        </tr>
        <tr> 
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr> 
          <td>&nbsp;</td>
    	  <td><input type="submit" name="upload" value="Uploader" /></td>
        </tr>
      </table>
    </form>

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    il t efaut aussi une page de traitement php , tu peux nous montrer le code ?

  3. #3
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut,

    J'ai fais sa dernièrement je peux te montrer mon code:

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
            function uploadAvatar($src_img, $nom_img)
            {
                $size_img = getimagesize($src_img);
                // on assigne la largeur de l'image a $w_img
                $w_img = $size_img[0];
                // on assigne la hauteur de l'image a $h_img
                $h_img = $size_img[1];
                // on reprend l'extension de l'image
                $ext = strtolower($size_img[2]);
     
                // Array d'erreurs
                $errorArray = array(
                'imgNotJpeg'        => false,
                'imgSelectError'    => false,
                'imgToBig'            => false,
                'imgPartial'        => false,
                'fileNotSpecified'    => false
                );
     
                // on test si c'est une image JPEG
                if($ext == '2')
                {
                 // si l'extension est jpg on ne fait rien
                }
                else
                {
                    // sinon on arrête de charger l'application et on met une erreur
                    return 'error bla bla bla';
                }
                // on assigne une valeur au chemin ou le fichier sera stocké sur le serveur
                $nom_img = testAvatarName($nom_img);
                // on upload le fichier
                move_uploaded_file($src_img,AVATAR_FOLDER.$nom_img);
                // test lors des erreur lors de l'upload
                if($error == UPLOAD_ERR_INI_SIZE)
                {
                    return 'error bla bla bla';
                }
                elseif($error == UPLOAD_ERR_FORM_SIZE)
                {
                    return 'error bla bla bla';
                }
                elseif($error == UPLOAD_ERR_PARTIAL)
                {
                    return 'error bla bla bla';
                }
                elseif($error == UPLOAD_ERR_NO_FILE)
                {
                    return 'error bla bla bla';
                }
     
                // resize et upload
                         resize(AVATAR_MAX_SIZE,$src_img,AVATAR_FOLDER,AVATAR_FOLDER.$nom_img,$nom_img,$w_img,$h_img);
     
                // insertion des info sur l'image dans la base de données
                // requête MySQL ...
            }
     
            function testAvatarName($nomImg)
            {
                while(file_exists(AVATAR_FOLDER.$nomImg))
                {
                    $nomImg = "img".rand().".jpg";    
                }
                return $nomImg;
            }
     
            function resize($taille_maximum,$source_img,$dest,$src_srv,$name,$w,$h)
            { // début de la fonction resize
                // on test la taille de l'image
                if($w <= $taille_maximum && $h <= $taille_maximum)
                {
                    // si le fichier a déjà la bonne dimension ou est plus petit que la taille max on fait une simple copie
                    copy($src_srv,$dest.$name);        
                }
                else
                {
                    // défini le type de l'image
                    //header ("Content-type: image/jpeg");
                    // crée une image par rapport à l'image de base
                    $source = imagecreatefromjpeg($src_srv);
                    // si l'image est plus large que haute
                    if($w >$h){
                        // on crée une image vide avec les dimensions de l'image de destination
                        $destination = imagecreatetruecolor($taille_maximum,($taille_maximum/(imagesx($source))*imagesy($source)));
                    }else{
                        // on crée une image vide avec les dimensions de l'image de destination mais dans l'autre sens (plus haute que large)
                        $destination = imagecreatetruecolor(($taille_maximum/((imagesy($source)))*imagesx($source)), $taille_maximum);
                    }
                        // redimesionne l'image par rapport à la nouvelle image
                    imagecopyresized($destination, $source, 0, 0, 0, 0, imagesx($destination), imagesy($destination), imagesx($source), imagesy($source));
                     // copie la nouvelle image dans le dossier normal
                    imagejpeg($destination,$dest.$name);
                }
            }
    Voilà je te laisse adapter à tes besoin... évidemment la fonction resize ne te sert peut-être à rien...

    Si t'as d'autres questions n'hésite pas

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    voici mon code de traitement

    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
     
    <?php
    $dossier = '../../images/images_upload/';
    $fichier = basename($_FILES['fichier']['name']);
    $taille_maxi = 400000;
    $taille = filesize($_FILES['fichier']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['fichier']['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
    {
         //On formate le nom du fichier ici...
         $fichier = strtr($fichier, 
              'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
              'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
         $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
         if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
         {
              echo 'Upload effectué avec succès !';
         }
         else //Sinon (la fonction renvoie FALSE).
         {
              echo 'Echec de l\'upload !';
         }
    }
    else
    {
         echo $erreur;
    }
    ?>

  5. #5
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Et qu'est ce qui ne fonctionne pas ?

    Stocke seulement le nom des image dans la base, pas le chemin.

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    bah il me met une erreur et donc ne copie pas l'image dans mon dossier

    Notice: Undefined index: fichier in d:\easyphp1-8\www\clown\admin\modules\gest_images\ajout_image.php on line 6

    Notice: Undefined index: fichier in d:\easyphp1-8\www\clown\admin\modules\gest_images\ajout_image.php on line 8

    Notice: Undefined index: fichier in d:\easyphp1-8\www\clown\admin\modules\gest_images\ajout_image.php on line 10
    Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...

  7. #7
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Et la ligne 6 est ?

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    $fichier = basename($_FILES['fichier']['name']);

  9. #9
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Pourquoi personne n'utilise copy() ?
    <?php
    if&#160;(!isset($_POST&#91;'send_ajout']))&#160;&#160;&#160;&#160;&#160;&#160;$send_ajout&#160;=&#160;'';
    else&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $send_ajout&#160;=&#160;$_POST&#91;'send_ajout'];
    if&#160;(!isset(
    $_POST&#91;'fichiers'])&#160&#160;&#160;&#160;&#160;&#160;&#160;$fichiers&#91;]&#160;=&#160;'';
    else&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $fichiers&#91;]&#160;=&#160;$_POST&#91;'fichiers'];

    if(&#160;
    $send_ajout!=''&#160;)
    {
    &#160;&#160;&#160;&#160;&#160;&#160;
    $dest='image';&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Chemin
    &#160;&#160;&#160;&#160;&#160;&#160;
    $nom_du_fichiers&#160;=&#160;$_FILES&#91;'fichiers']&#91;'name']&#91;0];&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Nom&#160;du&#160;fichier&#160;cible&#160;à&#160;uploader
    &#160;&#160;&#160;&#160;&#160;&#160;
    $nom_du_fichiers_temporaire&#160;=&#160;$_FILES&#91;'fichiers']&#91;'tmp_name']&#91;0];&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Nom&#160;du&#160;fichier&#160;dans&#160;le&#160;cache&#160;d'apache

    &#160;&#160;&#160;&#160;&#160;&#160;
    if&#160;(@copy($nom_du_fichiers_temporaire,&#160;$dest.'/'.$nom_du_fichiers))&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;'Upload&#160;réussi&#160;:&#160;<a&#160;href="'.$dest.'/'.$nom_du_fichiers.'">'.$dest.'/'.$nom_du_fichiers.'</a>';
    &#160;&#160;&#160;&#160;&#160;&#160;else&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo&#160;
    'Echec';
    }
    ?>
    <form&#160;method="post"&#160;enctype="multipart/form-data"&#160;&#160;action="">
    URL&#160;:&#160;<input&#160;type="file"&#160;name="fichiers&#91;]"&#160;size="30"&#160;/>
    &#160;&#160;&#160;&#160;&#160;&#160;<input&#160;type="submit"&#160;name="Submit"&#160;value="Envoyer">
    &#160;&#160;&#160;&#160;&#160;&#160;<input&#160;type="hidden"&#160;name="send_ajout"&#160;value="send_ajout"&#160;/>
    </form>
    Copier/coller ca dans une page php et créer un dossier image dans le même dossier que la page, certain que ca fontionne en local avec EAsyphp 1.8 et Free.

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    j'essaye et je te dis

  11. #11
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    il me mets échec

  12. #12
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    J'admet avoir du mal à y croire. Tu a bien créer le dossier ? Tu utilise quel serveur ?

    Quelqu'un d'autre peut tester ?

  13. #13
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    je suis en local

  14. #14
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    reprends tout ton code sauf que dans le formulaire tu mets ton form en POST et pas en GET

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="ajout_image.php" method="POST" enctype="multipart/form-data" onSubmit="return checkForm(this)">

  15. #15
    Membre averti Avatar de Space Cowboy
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2005
    Messages
    496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2005
    Messages : 496
    Points : 401
    Points
    401
    Par défaut
    Citation Envoyé par RideKick
    reprends tout ton code sauf que dans le formulaire tu mets ton form en POST et pas en GET

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="ajout_image.php" method="POST" enctype="multipart/form-data" onSubmit="return checkForm(this)">
    Même pas vu ....

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2008, 20h12
  2. [Upload] envoyer image sur serveur
    Par maubird dans le forum Langage
    Réponses: 2
    Dernier message: 01/07/2008, 11h54
  3. [Upload] Upload d'image sur ftp
    Par Sango69780 dans le forum Langage
    Réponses: 6
    Dernier message: 15/01/2008, 16h35
  4. [Upload] Uploader une image sur serveur
    Par josémaria dans le forum Langage
    Réponses: 17
    Dernier message: 30/10/2006, 22h11
  5. [Upload] Uploader des images sur mon serveur
    Par arti2004 dans le forum Langage
    Réponses: 13
    Dernier message: 12/07/2006, 11h25

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