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 :

Afficher une image


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut Afficher une image
    Re bonsoir,

    Voilà, j'ai un script qui upload des images, un autre qui affiche le contenu dans le répertoire désiré, et le dernier qui affiche la pop up de l'image,

    De mon côté ce qu'il se passe, j'ai bien le cadre de l'image et ses dimensions qui sont prisent en compte par contre il n'affiche pas l'image cf. les PJ

    Avez vous une idée pour corriger cela ?

    Cordialement,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    en soit le fichier upload_image.php et images.php sont Ok, je pense que çà vient du lien entre show_image.php et images.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
    <? #Script show_image.php
    // Cette page affiche une image
     
    $name=FALSE; // Variable drapeau
     
    // Vérifier le nom d'image pour l'URL
    if(isset($_GET['image'])) {
     
      // Chemin complet de l'image
      $image="c:/wamp/www/test/uploads/{$_GET['image']}";
     
      // Vérifier que l'image existe et qu'il s'agit d'un fichier
      if(file_exists($image)&&(is_file($image))) {
     
        // S'assurer qu'elle possède une extension d'image
        $ext=strtolower(substr($_GET['image'],-4));
     
        if(($ext=='.jpg')OR($ext=='.jpeg')OR($ext=='.png')) {
          // Définir name avec cette image
          $name=$_GET['image'];
        } // Fin de l'instruction if $ext
     
        } // Fin de l'instruction if file_exists()7
     
        } // Fin de l'instruction if isset($_GET['image'])
     
        // S'il y a un problème, utiliser l'image par défaut.
        if(!$name) {
          $image='images/unavailable.png';
          $name='unavailable.png';
        }
     
        // Récupérer les informations sur l'image
        $info=getimagesize($image);
        $fs=filesize($image);
     
        // Envoyer les informations du contenu
        header("Content-Type:{$info['mime']}\n");
        header("Content-Disposition: inline; filename=\"$name\"\n");
        header("Content-Length: $fs\n");
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        //Envoyer le fichier
        readfile($image);
     
        exit;
        ?>
    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
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
    <title>Images</title>
    <script language="Javascript">
    <!-- // Masquer pour les anciens navigateurs
     
    // Fonction de création de fenêtre pop-up
    function create_window(image, width, height) {
     
      // Ajouter quelques pixels à la largeur et à la hauteur
      width=width+10;
      height=height+10;
     
      // Si la fenêtre est déjà ouverte
      // la redimensionner avec les nouvelles dimensions
      if(window.popup && !window.popup.closed) {
        window.popup.resizeTo(width, height);
      }
     
      // Définir les propriétés de la fenêtre
      var specs="location=no, scrollbars=no, menubars=no, toolbars=no, resizable=yes, left=0, top=0, width="+ width +", height=" + height;
     
      // Définir l'URL
      var url="show_image.php?image="+image;
     
      // Créer la fenêtre pop-up
      popup=window.open(url,"ImageWindow",specs);
      popup.focus();
    } // Fin de la fonction
    // --></script>
    </head>
    <body>
    <p>Click on an image to view it in a separate window.</p>
    <table align="center" cellspacing="5" cellpadding="5" border="1">
    <tr>
    <td align="center"><b>Image Name</b></td>
    <td align="center"><b>Image Size</b></td>
    </tr>
    <?php #Script images.php
    // Ce script liste les images dans le répertoire uploads
     
    $dir='\wamp\www\test\uploads'; // Définition du répertoire à afficher
     
    $files=scandir($dir); // Lire toutes les images dans le tableau
     
    // Afficher chaque légende d'image sous forme de lien vers la fonction Javascript
    foreach($files as $image) {
     
      if(substr($image,0,1)!='.') { //Ignorer tout ce qui commence par un point.
     
      // Récupérer la taille de l'image en pixels
      $image_size=getimagesize("$dir/$image");
     
      // Calculer la taille de l'image en Ko
      $file_size=round((filesize("$dir/$image"))/1000) . "Kb";
     
      // Formater le nom de l'image pour l'URL
      $image=urlencode($image);
     
      // Imprimer les informations 
      echo "\t<tr>
      \t\t<td><a 
      href=\"javascript:create_window('$image',$image_size[0],$image_size[1])\">$image</a></td>
      \t\t<td>$file_size</td>\t</tr>\n";
     
    } // Fin de l'instruction IF
     
    } // Fin de la boucle foreach
    ?>
    </table>
    </body>
    </html>

  3. #3
    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
    Le chemin vers l'image doit être une url pas une chemin local.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $image="http://localhost/test/uploads/" . $_GET['image'];

  4. #4
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Même constat, en soit il récupère bien la taille de l'image, il ouvre une fenêtre en fonction de la taille de cette image, par contre l'ouverture de l'image ne s'effectue pas.

    J'ai essayé de tester la copie du lien de l'image 1.JPG et j'obtiens cela :"javascript:create_window('1.jpg',1190,756)" je me demande si le script java ne prend pas le dessus sur le reste du script. Il devrait normalement mettre un lien URL, Non?

    cf PJ ce que j'obtiens en local.
    Images attachées Images attachées   

  5. #5
    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
    et si tu appelles directement ton url ça fonctionne ?
    http://localhost/test/show_image.php?image=1.jpg

  6. #6
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    même constat, je cherche je cherche mais je ne vois pas ou çà coince pour le moment, merci de votre aide encore

  7. #7
    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
    Tu peux nous montre ton show_image.php actuel ?

  8. #8
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Voici le code de show_image.php, je cherche lorsque j'ai un peu de temps, désolé de répondre pas forcément automatiquement, je ne réponds pas lorsque je suis au taff, seulement le weekend,

    Cordialement,

    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
    <? #Script show_image.php
    // Cette page affiche une image
     
    $name=FALSE; // Variable drapeau
     
    // Vérifier le nom d'image pour l'URL
    if(isset($_GET['image'])) {
     
      // Chemin complet de l'image
      $image="http://localhost/test/uploads/" . $_GET['image'];
    //  $image="c:/wamp/www/test/uploads/{$_GET['image']}";
     
      // Vérifier que l'image existe et qu'il s'agit d'un fichier
      if(file_exists($image)&&(is_file($image))) {
     
        // S'assurer qu'elle possède une extension d'image
        $ext=strtolower(substr($_GET['image'],-4));
     
        if(($ext=='.jpg')OR($ext=='.jpeg')OR($ext=='.png')) {
          // Définir name avec cette image
          $name=$_GET['image'];
        } // Fin de l'instruction if $ext
     
        } // Fin de l'instruction if file_exists()7
     
        } // Fin de l'instruction if isset($_GET['image'])
     
        // S'il y a un problème, utiliser l'image par défaut.
        if(!$name) {
          $image='images/unavailable.png';
          $name='unavailable.png';
        }
     
        // Récupérer les informations sur l'image
        $info=getimagesize($image);
        $fs=filesize($image);
     
        // Envoyer les informations du contenu
        header("Content-Type:{$info['mime']}\n");
        header("Content-Disposition: inline; filename=\"$name\"\n");
        header("Content-Length: $fs\n");
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        //Envoyer le fichier
        readfile($image);
     
        exit;
        ?>

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bnojour,
    sauf erreur, file_exists() ne fonctionne bien qu'avec un chemin relatif.
    Avertissement
    Cette fonction retourne FALSE pour les fichiers non accessibles en raison des restrictions du safe mode. Cependant, ces fichiers peuvent toujours être inclus s'ils sont dans le dossier safe_mode_include_dir.
    Tu peux vérifier facilement avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $filename = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // le chemin relatif ou absolu vers un fichier existant, à tester
     
    if (file_exists($filename)) {
        echo "Le fichier $filename existe.";
    } else {
        echo "Le fichier $filename n'existe pas.";
    }
    ?>

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Moi ce que j'aime bien, c'est le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ext=strtolower(substr($_GET['image'],-4));
    puis ensuite le test


    Sinon, il est rigolo ton script, mais en gros, il sert à rien (ce qui explique que son appel ne renvoie rien)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    readfile($image);
    exit;
    C'est bien de sortir du script après avoir lu l'image mais je pense que ce serait quand même mieux de l'afficher non ?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Pour répondre à ton aide jreaux62, j'ai créé donc le fichier verif.php pour et j'ai bien la réponse suivante : Le fichier \wamp\www\test\uploads\1.jpg existe
    Le chemin indiqué est : \\wamp\www\test\uploads\1.jpg

    Nom : Capture.PNG
Affichages : 155
Taille : 80,1 Ko

  12. #12
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    J'ai corrigé ces erreurs Bovino, en retirant exit; et mis jpeg a là place de .jpeg mais bon toujours même constat... J'ai le cadre de l'image, le chemin qui est correcte pour la lire mais pas moyen çà ne s'affiche pas. Je cherche toujours.. merci quand même.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    J'ai ajouté readfile($filename) à ton script jreaux62 et là il lis au moins à l'état brut le contenu de l'image, il ne me met pas une page blanche...
    et en rajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: image/jpeg');
    l'image s'affiche correctement...

    Dans mon script de base j'ai appliqué ces changements mais il me laisse toujours une page blanche

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    ce script fonctionne, mais avec un chemin RELATIF (testé en local et serveur distant) :
    Code php : 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
    <?php // Script show_image.php
    // Cette page affiche une image
     
    $name = ''; // Variable drapeau
    //$rep_image = 'http://localhost/test/uploads/';
    $rep_image = './test/uploads/';
     
    // Vérifier le nom d'image pour l'URL
    if(!empty($_GET['image'])) {
     
      // Chemin complet de l'image
      $image = $rep_image . $_GET['image'];
     
      // Vérifier que l'image existe et qu'il s'agit d'un fichier
      if( file_exists($image) && (is_file($image)) ) {
     
        // S'assurer qu'elle possède une extension d'image
        $ext = strtolower( pathinfo($image, PATHINFO_EXTENSION) ); // extension REELLE !
        $ext_ok = array('jpg', 'jpeg', 'png', 'gif');
     
        if( in_array($ext, $ext_ok) ) {
          // Définir name avec cette image
          $name = $_GET['image'];
        }
     
      }
    }
    if( empty($name) ) {
          $name = 'unavailable.png';
          $image = 'images/' . $name;
    }
    if( !empty($name) ) {
        // Récupérer les informations sur l'image
        $info = getimagesize($image);
        $fs = filesize($image);
     
        // Envoyer les informations du contenu
        header("Content-Type:{$info['mime']}\n");
        header("Content-Disposition: inline; filename=\"$name\"\n");
        header("Content-Length: $fs\n");
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        //Envoyer le fichier
        readfile($image);
    }
    Avec un chemin ABSOLU, ça bloque au niveau de file_exists($image), car il considère qu'il s'agit d'un fichier distant/étranger, donc protégé.

    SOLUTION :
    Tout comme pour les include(), on peut indiquer le CHEMIN "relativement absolu" ** (ou absolument relatif ? ) ENTRE :
    • le script lui-même (show_image.php)
    • et le dossier de destination

    (** : même si ce fichier est lui-même inclus dans un autre, ce chemin ne change PAS !)
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $rep_image = __DIR__.'/test/uploads/'; 
    // ou
    $rep_image = dirname(__DIR__).'/test/uploads/'; 
    // à adapter !
    Dernière modification par Invité ; 14/02/2015 à 23h34.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2015
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    Effectivement en changeant le chemin et l'adapter de mon côté çà passe bien, merci pour votre aide, j'essayerais de comparer ton script avec le mien pour comprendre cela, c'est encore gentil de m'avoir aider.

    Cordialement,

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

Discussions similaires

  1. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21
  2. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 10h51
  3. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59
  4. Réponses: 2
    Dernier message: 04/02/2004, 22h32
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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