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 :

Visualiser une image téléchargée


Sujet :

Langage PHP

  1. #1
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut Visualiser une image téléchargée
    Salut,

    Avec le code suivant :

    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
    <?php
    if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {  
    echo "File ". $_FILES['userfile']['name'] ." téléchargé avec succès.\n";  
    echo "Affichage du contenu\n";  
    readfile($_FILES['userfile']['tmp_name']);  
    } else {  
    echo "Attaque possible par téléchargement de fichier : ";  
    echo "Nom du fichier : '". $_FILES['userfile']['tmp_name'] . "'.";  
    }  
    ?>
    <form action="test.php" method="post" enctype="multipart/form-data" name="imge">
      <input name="userfile" type="file" />
    </form>
    <?
    } 
    ?>
    J'essaye de visualiser une image téléchargée depuis mon PC.

    Mais voila, au lieu de voir l'image j'ai ce code afficher :

    [Qٍxمt,+“®QTç¶iE(îآv±دؤAئzW¶êؤk w%ظ¦>€
    Ou est le problème ?

    Merci.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2007
    Messages : 70
    Points : 51
    Points
    51
    Par défaut
    Salut
    essayes avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    if(move_uploaded_file($_FILES['userfile']['tmp_name'], $_FILES['userfile']['name']))
    {
    $n=addslashes($_FILES['userfile']['name']);
    echo "File ". $_FILES['userfile']['name'] ." téléchargé avec succès.<br>";  
    echo "Affichage du contenu<br>";
    echo"<img src=$n>";
    }
     else {  
    echo "Attaque possible par téléchargement de fichier : ";  
    echo "Nom du fichier : '". $_FILES['userfile']['name'] . "'.";  
    }  
    ?>
    sinon je te conseille de tester les extensions des fichiers pour la sécurité >>ICI

  3. #3
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Salut visqueu,

    Ca n'a pas marché avec move_uploaded_file, peut etre une restriction du serveur ...

    bon on utilisant ton code j'ai cet affichage :

    File 5237.gif téléchargé avec succès.
    Affichage du contenu



    avec l'image en carré blanc

  4. #4
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    si tu ne fais pas appel à move_uploaded_file, l'image sera automatiquement supprimé à la fin de l'exécution de ton script php.
    assure toi d'avoir les droits nécessaires sur le dossier qui recevra ton fichier (chmod)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo"<img src=\"$n\">";

  5. #5
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Voila le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (is_uploaded_file($_FILES['userfile']['tmp_name']))   
    {
    move_uploaded_file($_FILES['userfile']['tmp_name'], $_FILES['userfile']['name']);
    $n=addslashes($_FILES['userfile']['name']);
    echo "File ". $_FILES['userfile']['name'] ." téléchargé avec succès.<br />";  
    echo "Affichage du contenu<br />";  
    echo"<img src=\"$n\">";
    } else {  
    echo "Attaque possible par téléchargement de fichier : <br />";  
    echo "Nom du fichier : '".$_FILES['userfile']['name']."'.";  
    }
    et ça n'affiche rien ...

    En plus, je ne veux pas sauvegarder l'image dans un répertoire que lorsque la prévisualisation est parfaite. (Il y'aura manque d'espace après !)

    Puis-je sauvegarder le fichier sur le pc utilisateur dans le repertoire "\temp" par exemple pour pouvoir le visualiser ?



    Merci.

  6. #6
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Citation Envoyé par apt Voir le message
    Voila le code modifié :

    Puis-je sauvegarder le fichier sur le pc utilisateur dans le repertoire "\temp" par exemple pour pouvoir le visualiser ?



    Merci.
    Bonjour,

    Non, le traitement s'execute sur le serveur.

    Si tu as n'as toujours rien d'affiché, qu'affiches ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump($_FILES);

  7. #7
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    et si tu utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $n=$_FILES['userfile']['name'];
    sans le addslashes ???

  8. #8
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par ThomasR Voir le message
    Bonjour,

    Si tu as n'as toujours rien d'affiché, qu'affiches ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump($_FILES);
    le rendu :

    array(1) { ["userfile"]=> array(5) { ["name"]=> string(11) "av-1002.gif" ["type"]=> string(9) "image/gif" ["tmp_name"]=> string(14) "/tmp/phpC91U0i" ["error"]=> int(0) ["size"]=> int(3677) } }

  9. #9
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par nsanabi Voir le message
    et si tu utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $n=$_FILES['userfile']['name'];
    sans le addslashes ???
    toujours rien, et le chemin de l'image est dans la racine du site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://www.monsite.com/monimage.gif

  10. #10
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Montres nous ton code complet stp.

  11. #11
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    ou alors montre nous la parti du code HTML génèrée

  12. #12
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Voila :

    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
    <?php
    if (is_uploaded_file($_FILES['userfile']['tmp_name']))   
    {
    //move_uploaded_file($_FILES['userfile']['tmp_name'], $_FILES['userfile']['name']);
    $n=$_FILES['userfile']['tmp_name'];
     
    echo "Fichier ". $_FILES['userfile']['name'] ." téléchargé avec succès.\n<br>";  
    echo "Affichage du contenu\n<br>";  
    echo"<img src='$n'>";
     
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
    Upload Image: <input type="file" name="userfile">
    <font size="1">Click browse to upload a local file</font>
    <input type="submit" value="Upload Image">
    </form> 
    <?
    }  
    ?>

  13. #13
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    je l'ai pourtant dis plutot, si tu ne deplace pas le fichier uploadé à l'aide de la fonction move_uploaded_file, il sera automatiquement supprimé de son emplacement temporaire $_FILES['userfile']['tmp_name']
    alors dans ton code tu essai d'afficher quelque chose qui n'existe pas

    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
     
    <?php
    if (isset($_FILES['userfile']) && is_uploaded_file($_FILES['userfile']['tmp_name']))   
    {
    move_uploaded_file($_FILES['userfile']['tmp_name'], $_FILES['userfile']['name']);
    $n=$_FILES['userfile']['name'];
     
    echo "Fichier ". $_FILES['userfile']['name'] ." téléchargé avec succès.\n<br>";  
    echo "Affichage du contenu\n<br>";  
    echo"<img src='$n'>";
     
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
    Upload Image: <input type="file" name="userfile">
    <font size="1">Click browse to upload a local file</font>
    <input type="submit" value="Upload Image">
    </form> 
    <?php
    }  
    ?>

  14. #14
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Et j'ai répondu :

    Citation Envoyé par apt Voir le message
    Salut visqueu,

    Ca n'a pas marché avec move_uploaded_file, peut etre une restriction du serveur ...
    et voila les avertissements reçus :

    Warning: move_uploaded_file(book.gif) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/***/public_html/test_up.php on line 4
    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php20vcrz' to 'book.gif' in /home/***/public_html/test_up.php on line 4

  15. #15
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    Citation Envoyé par nsanabi Voir le message
    assure toi d'avoir les droits nécessaires sur le dossier qui recevra ton fichier (chmod)
    visiblement ton problème est lié aux droits de ton dossier home/***/public_html

    Tu peux modifier les droits des fichiers avec un client FTP si tu en utilise un comme filezilla , un clic droit sur un dossier puis attributs du fichier puis tu mets 777 pour autoriser tous les droits en lecture, écriture et en exécution

    ps: de préférence créer un dossier spécial qui recevra ton fichier, et mettre un chmod 777 sur ce dossier

  16. #16
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    J'ai créé un nouveau dossier appelé : tempo avec chmod 777.

    Le code modifié :

    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
    <?php
    $uploaddir = 'tempo/';
    $uploadfile = $uploaddir . basename($_FILES['userfile']['tmp_name']);
     
    if (isset($_FILES['userfile']) && is_uploaded_file($_FILES['userfile']['tmp_name']))   
    {
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
    $n=$_FILES['userfile']['name'];
    echo '<pre>';
    echo "Fichier ". $_FILES['userfile']['name'] ." téléchargé avec succès.\n<br>";  
    echo "Affichage du contenu\n<br>";  
    echo"<img src='$n'>";
    echo '<br />info:<br />';
    print_r($_FILES);
    echo '</pre>';
    } else {
    ?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
    Upload Image: <input type="file" name="userfile">
    <font size="1">Click browse to upload a local file</font>
    <input type="submit" value="Upload Image">
    </form> 
    <?php
    }  
    ?>
    le rendu :

    Warning: move_uploaded_file(tempo/phpncpcrI) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/***/public_html/test_up.php on line 7
    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpncpcrI' to 'tempo/phpncpcrI' in /home/***/public_html/test_up.php on line 7
    Fichier 5237.gif téléchargé avec succès.
    Affichage du contenu
    info:Array
    (
    [userfile] => Array
    (
    [name] => 5237.gif
    [type] => image/pjpeg
    [tmp_name] => /tmp/phpncpcrI
    [error] => 0
    [size] => 1978
    )

    )
    Je crois qu'il y'a la fonction copy() qui pourra remplacer move_uploaded_file()


  17. #17
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    ton précédant code est faux, je te laisse affiche ta variable $uploadfile pour voir pourquoi

    essai comme 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
     
     
    <?php
    $uploaddir = 'tempo/';
     
     
    if (isset($_FILES['userfile']) && is_uploaded_file($_FILES['userfile']['tmp_name']))   
    {
     
    $uploadfile = $uploaddir . $_FILES['userfile']['name'];
     
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
    $n=$_FILES['userfile']['name'];
    echo '<pre>';
    echo "Fichier ". $_FILES['userfile']['name'] ." téléchargé avec succès.\n<br>";  
    echo "Affichage du contenu\n<br>";  
    echo"<img src='$n'>";
    echo '<br />info:<br />';
    print_r($_FILES);
    echo '</pre>';
    } else {
    ?>
    ...

  18. #18
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    Antik !

    Ca marche.

    maintenant $uploadfile affiche : tempo/monimage.gif

    et il faut changer la valeur de $n :



    maintenant il faut supprimer le fichier temporaire (tempo/monimage.gif) si l'image aprés visualisation est acceptée ...

  19. #19
    Membre éclairé Avatar de nsanabi
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Points : 678
    Points
    678
    Par défaut
    et il faut changer la valeur de $n :
    c'est vrai j'y avais pas prêté attention, je m'excuse.

    pour supprimer le fichier utiliser la fonction unlink

  20. #20
    apt
    apt est déconnecté
    Membre régulier
    Inscrit en
    Mai 2002
    Messages
    867
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 867
    Points : 118
    Points
    118
    Par défaut
    de rien nsanabi et merci bien !

    je vais essayer avec :

    dans le dossier tempo/

    parceque le fichier temporaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_FILES['userfile']['tmp_name']
    sera supprimer automatiquement à la fin de l'execution du script comme signaler en haut.

Discussions similaires

  1. Propriétés hauteur et largeur d'une image téléchargée
    Par Mister Paul dans le forum Langage
    Réponses: 1
    Dernier message: 26/02/2010, 14h52
  2. Visualiser une image avec zoom
    Par hraiwen dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/02/2010, 17h29
  3. visualiser une image 3D a travers une page web
    Par ghadroud dans le forum Jeux web
    Réponses: 4
    Dernier message: 21/01/2009, 09h53
  4. Souci pour visualiser une image
    Par bastien dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 04/02/2008, 11h39
  5. [C#] Visualiser une image
    Par tyraslin dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/11/2005, 12h03

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