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] Problème d'upload image via simple formulaire [POST]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Points : 43
    Points
    43
    Par défaut [Upload] Problème d'upload image via simple formulaire [POST]
    Bonjour,

    Tout d'abord les codes utilisés.
    le formulaire
    Code : PHP - Afficher / masquer les numéros de ligne

    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
       1.
          <h2><a href="index.php?page=image">Retour à la liste des images</a></h2>
       2.
     
       3.
          <form method="POST" action="index.php?page=upload" enctype="multipart/form-data">
       4.
               <!-- On limite le fichier à 1Mo -->
       5.
               <input type="hidden" name="MAX_FILE_SIZE" value="1O00000">
       6.
               Image : <input type="file" name="avatar"><br /><br />
       7.
                   Livre : <select name="livre">
       8.
                                          <?php
       9.
                  mysql_connect("");
      10.
                  mysql_select_db("");
      11.
                                          $sql = 'SELECT * FROM livre ORDER BY id';
      12.
                                          $retour = mysql_query($sql)or die(mysql_error());
      13.
                                          while ($donnees = mysql_fetch_array($retour))
      14.
                                          {
      15.
                                                  print '<option value="'. $donnees['id'] . '">'. $donnees['titre'] .'</option>';
      16.
                                          }
      17.
                                          ?>
      18.
                                  </select>
      19.
               <br><br><input type="submit" name="envoyer" value="Envoyer l'image">
      20.
          </form>

    Le code d'upload
    Code : PHP - Afficher / masquer les numéros de ligne

    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
       1.
          <?php
       2.
          $dossier = '../image';
       3.
          $fichier = basename($_FILES['avatar']['name']);
       4.
          $taille_maxi = 1000000;
       5.
          $taille = filesize($_FILES['avatar']['tmp_name']);
       6.
          $extensions = array('.png', '.gif', '.jpg', '.jpeg');
       7.
          $extension = strrchr($_FILES['avatar']['name'], '.');
       8.
          $livre = $POST['livre'];
       9.
          //Début des vérifications de sécurité...
      10.
          if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
      11.
          {
      12.
               $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
      13.
          }
      14.
          if($taille>$taille_maxi)
      15.
          {
      16.
               $erreur = 'Le fichier est trop gros...';
      17.
          }
      18.
          if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
      19.
          {
      20.
               //On formate le nom du fichier ici...
      21.
               $fichier = strtr($fichier,
      22.
                    'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
      23.
                    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
      24.
               $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
      25.
               if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
      26.
               {
      27.
                   //on enregistre le nom et la taille dans la base de données
      28.
                          mysql_connect("");
      29.
                          mysql_select_db("");
      30.
     
      31.
                          mysql_query("INSERT INTO image VALUES('', '" . $fichier . "', '" . $taille . "', '" . $livre ."')")or die(mysql_error());
      32.
     
      33.
                          mysql_close();
      34.
     
      35.
                          echo 'Upload effectué avec succès !';
      36.
               }
      37.
               else //Sinon (la fonction renvoie FALSE).
      38.
               {
      39.
                    echo 'Echec de l\'upload !';
      40.
               }
      41.
          }
      42.
          else
      43.
          {
      44.
               echo $erreur;
      45.
          }
      46.
          ?>


    Mon soucis est le suivant, ça marche pas... Pourtant lors de mes essais avec easyphp ça fonctionnait parfaitement, en revanche depuis que j'ai chargé le site pour des essai "réel" sur mon serveur free, ça ne fonctionne pas... Je précise que l'upload s'effectue dans la zone administrative pour attérir dans un dossier qui est à la racine du site. Je précise également que pour le moment le site (et la zone administrative) sont protégés par mot de passe. DU moins temporairement pour la partie public du site car il est encore en test si j'ose dire.

    J'ai essayé en supprimant les fichier de mot de passe, mais rien n'y fait. L'erreur affiché est celle de l'échec de l'upload. Je sais que ça ne viens pas de la taille de mon fichier et de son format.

    Bref quel est le problème car visiblement 'move_uploaded_file' ne semble tout simplement pas fonctionner...

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,

    c'est peut-etre $dossier qui gene...
    Surtout le ../

    Essaie soit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dossier = './image';
    Ou alors le chemin complet du dossier...
    Ou alors un sous-dossier ou se trouve le fichier .php

    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Points : 43
    Points
    43
    Par défaut
    c'est peut-etre $dossier qui gene...

    >>Je pense aussi, mais j'arrive pas à régler le problème

    Surtout le ../

    Essaie soit ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dossier = './image';
    >> Déjà essayé, même résultat hélas.

    Ou alors le chemin complet du dossier...

    >>Chemin absolu? Déjà essay en utilisant un cod php renvoyant le chemin absolu de son propre emplacement (je l'avais mis dans le dossier image de destination), même résultat hélas

    Ou alors un sous-dossier ou se trouve le fichier .php

    >>Déjà essayé aussi, même résultat.

    @+
    cadou

    >>J'ai peut être oublié des truc, peut être que ça vient du serveur Free, mais je pense avoir déjà essayé tout ce que j'ai put trouver

    Le pire c'est qu'en local sur mon petit Easy PHP ça marche nikel, sur Free ça marche pas. je pense que le $dossier pose problème oui, mais j'ai beau le modifier je trouve pas

  4. #4
    Membre éclairé Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Points : 779
    Points
    779
    Par défaut
    Hello,

    Personnellement j'ai un site sur Free, et j'utilise de l'upload a tout bout de champ dans mes scripts donc c'est que cela fonctionne...

    Et tu va rigoler, mais je pense savoir ou est le probleme

    1°)
    $dossier = '../image';

    2°)
    if(move_uploaded_file($_FILES['avatar']['tmp_name'], $dossier . $fichier))

    Pour faire court, si ton fichier s'apelle matrogne.jpg et que tu l'uploades, cela reviens a lui demander de concatener ../image et matrogne.jpg
    ce qui en gros donnera ../imagematrogne.jpg ce que tu ne veux pas...

    Bref ecris ceci et cela devrais aller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $dossier = '../image/';
    Ce que je te conseilles egalement, ce serait d'écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $myfile = $dossier . $fichier;
    if(move_uploaded_file($_FILES['avatar']['tmp_name'], $myfile))
    @+
    cadou
    LMN24 - Site d'actualité internationale multilingue
    http://www.lmn24.com

  5. #5
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 64
    Points : 43
    Points
    43
    Par défaut
    Ben non marche toujours pas
    Alors ce que je vais faire c'est reprendre à zéro tout ça demain matin. Au moins comme ça, ça marchera peut être qui sait...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/07/2008, 20h12
  2. Réponses: 1
    Dernier message: 18/01/2008, 16h18
  3. [Upload] problème d'upload d'image
    Par visqueu dans le forum Langage
    Réponses: 4
    Dernier message: 28/03/2007, 23h11
  4. Problème de récup image via http://
    Par TK5EP dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2005, 19h59
  5. [Upload] Problème d'upload :)
    Par manu_du_31 dans le forum Langage
    Réponses: 3
    Dernier message: 14/11/2004, 15h56

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