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 d'images


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 8
    Points
    8
    Par défaut Upload d'images
    Bonsoir,

    Je viens tout juste, de terminer mon script pour uploader les images, cependant il y a quelques petites erreurs que je n'arrive pas à résoudre, c'est pour cela que je viens vous demander de l'aide.

    Donc voici ce que je veux faire :

    Les membres peuvent envoyer une image de 40*40 pixels et qui ne dépasse pas les 25 000 octets, et qui ensuite s'affiche en dessous de mon formulaire pour envoyer l'image.

    Voici mon 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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?php
    // CONFIG
    $UploadFolder = 'upload/';
    $Extensions = array (".jpg", ".gif", ".bmp", ".png");
     
    $max_filesize = 25000;
    $max_filesize_kb = ($max_filesize / 1024);
    $maxwidth = 40;
    $maxheight = 40;
     
    // SCRIPT
     
    // Si le dossier d'upload existe pas
    if(!is_dir($UploadFolder)){
      echo 'Le dossier où sont sauvegardés les fichiers n\'a pas été trouvé.<br />
      Veuillez créer un dossier nommé '.$UploadFolder.' ou changer le nom de celui-ci pour un existant dans la section de configuration.';
      exit;
    }
     
    // Si le dossier est pas en CHMOD 777
    if(!is_writable($UploadFolder)){
      echo 'Le programme ne possède pas les permissions nécessaires sur le dossier où sont sauvegardés les fichiers. <br />
      Veuillez le mettre en CHMOD 777.';
      exit;
    }
     
    if(isset($_POST['form2']) AND !empty($_POST['form2'])){
      if(isset($_FILES['nom_du_fichier'])){
     
     
        // On gère les erreurs ici
     
     
        if($_FILES['nom_du_fichier']['size'] > $max_filesize){
          echo  "Le fichier excède la taille permise par le programme.";
          exit; // On stop le script
        }
     
        if ($_FILES['nom_du_fichier']['error']) {
          switch ($_FILES['nom_du_fichier']['error']){
            case 1: // UPLOAD_ERR_INI_SIZE
              $errorfiles = "Le fichier excède la taille permise par le serveur.";
            break;
            case 2: // UPLOAD_ERR_FORM_SIZE
              $errorfiles =  "Le fichier excède la taille permise par le programme.";
            break;
            case 3: // UPLOAD_ERR_PARTIAL
              $errorfiles =  "Le transfert à été intérrompu !";
            break;
            case 4: // UPLOAD_ERR_NO_FILE
              $errorfiles =  "Aucun fichier n'a été sélectionné.";
            break;
          }
          echo $errorfiles;
          exit; // On stop le script
        }
     
         $imagesize = getimagesize($_FILES['nom_du_fichier']['tmp_name']);
         $imagewidth = $imagesize[0];
         $imageheight = $imagesize[1];
     
         if(($imagewidth > $maxwidth) OR ($imageheight > $maxheight)){
          echo 'Les dimension de votre image ne doivent pas éxéder '.$maxwidth.'px par '.$maxheight.'px.';
          exit; // On stop le script
         }
     
         if(move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $fullname)) {
           echo '<img src="'.$fullname.'" />';
         }else{
           echo 'Le serveur n\'a pas pus répondre à votre demande.';
         }
       }
      }
    ?>
    Et voici mon formulaire :

    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
    <fieldset style="margin:10px;">
    	<table width=502 height=381>
    <tr>
    <td align="center" valign="top">
     
     
    <form method="POST" action="traitement.php" enctype="multipart/form-data" name="f">
    <input type="hidden" name="form2" value="form2">
    Fichier <br />
    <input type="file" name="nom_du_fichier">  <br /><br />
    <input type="submit" name="send" value="Envoyer!">
    </form>
     
    </td>
    </tr>
    </table>
    et voici mon message d'erreur :

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/www/tmp/phpG2QsV3' to '' in function secured by the Olympe PHP module on line 1
    Le serveur n'a pas pus répondre à votre demande.
    Merci d'avance,

    Bonne soirée

  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
    Bonjour,

    $fullname n'est pas définie.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    A oups
    Je ne sais pas trop comment faire là, je viens de rajouter cela :

    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
    <fieldset style="margin:10px;">
    	<table width=502 height=381>
    <tr>
    <td align="center" valign="top">
     
     
    <form method="POST" action="traitement.php" enctype="multipart/form-data" name="f">
    <input type="hidden" name="form2" value="form2">
    Fichier <br />
    <input type="file" name="nom_du_fichier">  <br /><br />
    <input type="submit" name="send" value="Envoyer!">
    </form>
     
    <?php
     
    //Une fois qu'on a envoyé l'image et qu'elle est correct on l'affiche :
     
    echo'<img src="'.$fullname.'" />';
     
    ?>
     
    </td>
    </tr>
    </table>
     
    </fieldset>

  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
    Je ne vois pas bien le rapport ...
    Dans ton premier script tu deplaces ton fichier recu vers $fullname mais tu n'as pas donné de valeur à $fullname.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    Bah dans mon script php, on envoi le fichier $fullname le récupère et ensuite, sur mon deuxième script $fullname affiche l'image uploadé

  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
    Regarde dans tes fichiers quand tu utilises $fullname et tu verras que nulle part tu ne lui donnes de valeur.
    $fullname dans ton script doit etre la destination (repertoire/nom) du fichier recu via le formulaire, sur ton serveur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    A ok merci

    Cependant, j'ai suivis un dès tutos du site, cela me semble moins lourd pour le serveur, mais j'ai une erreur...Cela me redirige vers une page introuvable.

    Voici mon formulaire :

    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
    <fieldset style="margin:10px;">
    	<table width=502 height=381>
    <tr>
    <td align="center" valign="top">
     
     
     
    <form method="POST" action="upload.php" enctype="multipart/form-data">
         <!-- On limite le fichier à 2Mo -->
         <input type="hidden" name="traitement.php" value="25000">
         Fichier : <input type="file" name="avatar">
         <input type="submit" name="envoyer" value="Envoyer le fichier">
    </form>
     
    </td>
    </tr>
    </table>
     
    </fieldset>
    Voici mon 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 = 'upload/';
    $fichier = basename($_FILES['avatar']['name']);
    $taille_maxi = 25000;
    $taille = filesize($_FILES['avatar']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['avatar']['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['avatar']['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;
    }
    ?>

  8. #8
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    l'erreur se passe à quel moment ? apres envoi du formulaire ?
    Si c'est le cas, c'est tout simplement que le lien action du formulaire est pas bon.

    ==> <form method="post" action="lien_vers_ma_page_de_traitement.php"></form>


    A part ça, je vois pas où ton script pourrait être redirigé vu qu'il n'y a pas de header("Location")

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 28
    Points : 8
    Points
    8
    Par défaut
    L'erreur apparait quand j'envoie le fichier.
    Ce que je veux c'est lorsqu'on envoi le fichier, pas besoin d'aller sur une autre page, on reste sur la même mais avec un message disant que l'image a bien été upload ou si il y a une erreur

  10. #10
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    bah relis mon post alors :s

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2005, 22h17
  2. Uploader une image à partir d'un formulaire ?
    Par netwebzone dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2005, 09h27
  3. [Upload] Upload d'image....
    Par tochbee dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2005, 11h44
  4. [Debutant] [JSP/Servlet] Upload d'image vers le serveur
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 05/07/2005, 17h42
  5. Upload d'images sur le forum
    Par KibitO dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 09/10/2004, 23h18

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