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 :

Un bête serveur d'images


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut Un bête serveur d'images
    Bonjour,

    Comment puis-je m'y prendre pour délivrer une image à partir d'une url php ?

    J'ai essayé ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?
    header('Content-type: image/jpeg');
    $id = $_GET["id"];
    include "C:/images/".$id.".jpg";
    ?>
    Mais ça ne marche pas tout le temp. Très souvent il me dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <b>Warning</b>:  Unexpected character in input:  '' (ASCII=29) state=1 in <b>c:\images\1.jpg</b> on line <b>100</b><br />
     
    <b>Parse error</b>:  parse error, unexpected T_STRING in <b>c:\images\1.jpg</b> on line <b>100</b><br />
    Apparement, ce n'est pas la bonne méthode... Je voudrais délivrer une sorte de flux vers l'image pour pouvoir récupérer le fichier binaire à partir d'un programme...

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Utiliser include implique que l'image sera analysée par PHP comme du code
    Il faut utiliser readfile() à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?
    header('Content-type: image/jpeg');
    $id = $_GET["id"];
    readfile("C:/images/".$id.".jpg");
    ?>
    Fait tout de même attention a faire un minimum de vérification sur le contenu de $_GET['id'], de sorte que l'on ne puisse pas acceder à n'importe quel fichier sur ton disque dur (en appelant le script avec script.php?id=../Documents%20and%20settings/ par exemple)

    Si tu veux vérifier qu'un fichier est bien une image, tu peux par exemple utiliser getimagesize().

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Points : 42
    Points
    42
    Par défaut
    ça marche, merci bien !

    Par contre, qu'est-ce que pourrais faire ce script pour avertir un programme qu'il n'y a pas d'image à cette url ?

    En fait, je fais un programme java qui utilise la fonction getImage(url) (voir ici)
    Je voudrais trouver le moyen le plus efficace de faire comprendre au client java qu'il n'y a pas d'image lorsque c'est le cas...

  4. #4
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Utilise un code 404 comme réponse, c'est le plus simple je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $id = $_GET["id"];
    $path = "C:/images/".$id.".jpg";
     
    if(file_exists($path)) {
      header('Content-type: image/jpeg');
      readfile($path);
    }
    else header("HTTP/1.0 404 Not Found");
    ?>
    A+
    Marc

Discussions similaires

  1. Serveur d'images & boot PXE
    Par SpaxYN dans le forum Réseau
    Réponses: 0
    Dernier message: 20/09/2009, 12h45
  2. Background-image pointant vers un serveur d'images
    Par ilalaina dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 01/12/2008, 14h59
  3. Sauver dans le cache du serveur une image
    Par speed034 dans le forum Langage
    Réponses: 1
    Dernier message: 28/10/2008, 14h39
  4. client serveur d'image sous linux
    Par stacker_junior dans le forum Linux
    Réponses: 1
    Dernier message: 08/02/2006, 03h22
  5. Un serveur d'images
    Par norwy dans le forum ASP
    Réponses: 6
    Dernier message: 27/10/2005, 23h26

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