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'une image


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Par défaut upload d'une image
    Bonjour j'essaye d'uploader une image et je n'y arrive pas, je suis en local sous wamp, j'ai le message "erreur d'upload", je ne vois pas d'ou ca vient, peut etre le chemin pour placé l'image mais j ai essayé de mettre un chemin relatif ou absolue et cela ne change rien, si quelqu un peut m'aider;

    mon chemin pour aller jusqu' a la page de formulaire:

    C:\wamp\www\monSite\site\formulaire.php

    pour y acceder :

    www.site.com/formulaire.php

    Formulaire
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" action=""  enctype="multipart/form-data">
    <label for="image1">Image 1 :</label>
    <input type="file" name="image_1" id="image1" />
    <input type="submit" name="Ajouter" value="Ajouter" />   
    </form>

    Traitement (sur la mm page)
    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
    if((isset($_FILES['image_1']))&&($_FILES['image_1']['error']==0)){ // Il y a l'image et pas d'erreur.
      if($_FILES['image_1']['size']<=125000){ // Si l'image n'est pas trop gros.
        // Testons si l'extension est autorisée
        $infosfichier= pathinfo($_FILES['image_1']['name']);
        $extension_upload=$infosfichier['extension'];
        $extensions_autorisees= array('jpg', 'jpeg');
     
        if(in_array($extension_upload,$extensions_autorisees)){
          // On peut valider l'image et la stocker définitivement                                              
          $transfert = move_uploaded_file($_FILES['image_1']['tmp_name'], 'uploads/'. basename($_FILES['image_1']['name']));
          if(!$transfert) {trigger_error("erreur d'upload"); $err='Erreur move_upload_file( )';}
     
     
        }else{ // Probleme l'extension n'est pas la bonne.
        $err='Probleme l\'extension de l\'image  n\'est pas la bonne.';
        }  
      }else{ // Probleme l'image est trop grosse.
       $err='L\'image  est trop grosse.';
      }
    }
    echo $err;
    Quand je fais un "print_r($_FILES);"

    Array
    (
        [image_1] => Array
            (
                [name] => bloublou.jpg
                [type] => image/jpeg
                [tmp_name] => C:\wamp\tmp\php10B8.tmp
                [error] => 0
                [size] => 75568
            )
    
    )
    Une petite idée ?

    J'ai testé le cote ci dessous, le fichier ce crée bien, mais tjrs la même erreur, l'image ne de deplace pas, dans la configuration de php sur wamp, "file uploads" est bien coché..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mkdir('fichier/stock/', 0777, true);
    $transfert = move_uploaded_file($_FILES['image_1']['tmp_name'], 'fichier/stock/'. basename($_FILES['image_1']['name']));
    J'ai testé un autre code que j'ai vu ailleur et la ca bloque a "if(is_uploaded_file($_FILES['image_1']['tmp_name']))" donc j ai le message 'Problème : Attaque possible par le fichier ';
    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
    if((isset($_FILES['image_1']))&&($_FILES['image_1']['error']==0)){ // Il y a l'image et pas d'erreur.
      if($_FILES['image_1']['size']<=125000){ // Si l'image n'est pas trop gros.
        // Testons si l'extension est autorisée
        $infosfichier= pathinfo($_FILES['image_1']['name']);
        $extension_upload=$infosfichier['extension'];
        $extensions_autorisees= array('jpg', 'jpeg');
        if(in_array($extension_upload,$extensions_autorisees)){
          // On peut valider l'image et la stocker définitivement
          if(is_uploaded_file($_FILES['image_1']['tmp_name']))
          {
            if (!move_uploaded_file($_FILES['image_1']['tmp_name'], '/m1/m2/'. basename($_FILES['image_1']['name'])))
            {
               $err='Problème : Impossible de déplacer le fichier dans son répertoire de destination';
            }
          }
          else
          {
            $err='Problème : Attaque possible par le fichier ';
          }                                                                            
       }else{ // Probleme l'extension n'est pas la bonne.
         $err='Probleme l\'extension de l\'image  n\'est pas la bonne.';
       }   
     }else{ // Probleme l'image est trop grosse.
      $err='L\'image  est trop grosse.';
     }

  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
    Par défaut
    Affiche bien toutes les erreurs PHP : La fonction move_uploaded_file() produit des messages d'erreur donc tu devrais les voir.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Par défaut
    non justement c est bien le probleme, aucune erreur mais pourtant l'image n'est pas deplacer la ou je le voudrais

  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
    Par défaut
    Affiche bien toutes les erreurs PHP.

    Concretement tu dois avoir un problème soit sur le chemin soit sur les droits.

    'uploads/' c'est un repertoire 'uploads' au même niveau que le script mais '/m1' c'est un repertoire 'm1' à la racine de la machine.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Et au passage tu n'as pas besoin de faire "is_uploaded_file()" car cette fonction :
    Citation Envoyé par php
    Retourne TRUE si le fichier filename a été téléchargé par HTTP POST...
    Or la fonction "move_uploaded_file()" que tu utilise juste après pour déplacer ton fichier :
    Citation Envoyé par php
    S'assure que le fichier filename est un fichier téléchargé par HTTP POST. Si le fichier est valide, il est déplacé jusqu'à destination.
    C'est donc redondant, l'emploi de "is_uploaded_file()" ne sert à rien ici...

  6. #6
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 110
    Par défaut
    Affiche bien toutes les erreurs PHP.
    ? comment faire, j'ai aucune erreur sur la page, aucune erreur quand j'affiche le code source.

    Concretement tu dois avoir un problème soit sur le chemin soit sur les droits.
    Il n' a pas de CHMOD sur windows, les droits au niveau de wamp ? j'ai vu qu'il y avait "file uploads" dans la configuration de php et celui ci est déja coché, je ne sais pas si il y a d'autre chose à verifier sachant que j'ai pu lire que l'upload fonctionnait par defaut sans avoir à modifier quoi que ce soit... je n'ai rien bidouiller sur wamp, juste crée un virtualhost pour acceder à mes pages différemment, le non fonctionnement de l'upload pourrait venir de la ?

    'uploads/' c'est un repertoire 'uploads' au même niveau que le script mais '/m1' c'est un repertoire 'm1' à la racine de la machine.
    Je suis bien d'accord, j'ai bien le dossier au même niveau:
    C:\wamp\www\monSite\site\formulaire.php
    C:\wamp\www\monSite\site\uploads

    Se qui est bisare c'est quand je crée le dossier juste avant de deplacer l'image dans ce dernier, le dossier se crée bien mais ca s'arrete la.. l'image ne va pas du dossier temporaire au dossier venant de se créer !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mkdir('fichier/stock/', 0777, true);
    $transfert = move_uploaded_file($_FILES['image_1']['tmp_name'], 'fichier/stock/'. basename($_FILES['image_1']['name']));
    Le faite que je suis en local et que je n'accede pas à mes dossier via "http://localhost/monSite/site/index.php" ou "http://127.0.0.1/monSite/site/index.php" mais par www.site.com en virtualhost change t-il quelque chose au niveau des droits ?

    Fichier C:\WINDOWS\system32\drivers\etc\hosts
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    127.0.0.1       localhost
    127.0.0.1       www.site.com
    Fichier C:\wamp\bin\apache\Apache2.4.4\conf\extra\httpd-vhosts.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/"
        ServerName localhost
    </VirtualHost>
     
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/monSite/site/"
        ServerAdmin webmaster@site.com
        ServerName www.site.com
        ServerAlias site.com
    </VirtualHost>
    Et au passage tu n'as pas besoin de faire "is_uploaded_file()" car cette fonction :
    Citation Envoyé par php
    Retourne TRUE si le fichier filename a été téléchargé par HTTP POST...
    Or la fonction "move_uploaded_file()" que tu utilise juste après pour déplacer ton fichier :
    Citation Envoyé par php
    S'assure que le fichier filename est un fichier téléchargé par HTTP POST. Si le fichier est valide, il est déplacé jusqu'à destination.
    C'est donc redondant, l'emploi de "is_uploaded_file()" ne sert à rien ici...
    D'accord, en faite vu que mon code ne marche pas, j'essaye d'aller voir à droite et à gauche pour essayer de cerner le problème en essayant des codes différents..

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

Discussions similaires

  1. [Upload] upload d'une image
    Par emna_icn dans le forum Langage
    Réponses: 11
    Dernier message: 05/05/2006, 00h14
  2. [Upload] Upload d'une image
    Par Seth77 dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2006, 12h00
  3. [Image]upload d'une image
    Par leloup84 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 07/03/2006, 16h29
  4. [Upload] envoyer une image
    Par carter15_2001 dans le forum Langage
    Réponses: 22
    Dernier message: 20/01/2006, 19h52
  5. [Upload] Renommer une image uploadée
    Par Empty_body dans le forum Langage
    Réponses: 4
    Dernier message: 05/01/2006, 07h51

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