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 :

récupérer une image avec readfile


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut récupérer une image avec readfile
    Bonjour à tous, voilà je doit afficher plusieurs fois la même image et j'aimerais les charger d'avance via PHP afin d'éviter les téléchargement inutiles. J'ai déjà essayé ce code dans un fichier externe image.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $image="image_decouverte.png";
    readfile($image);
    et dans mon fichier :

    Cela fonctionne mais lorsque j'utilise ce même code dans le même fichier, au lieu des images, ma page est rempli de caractères spéciaux. Que faut-il faire pour que readfile fonctionne dans le même fichier que le code pour l'afficher ? Merci d'avance pour la réponse.

    EDIT : même résultat avec fopen et fpassthru

  2. #2
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Tout d'abord, pour ce que tu cherches à faire, tu dois transmettre le bon header sur image.php parce que si tu as des caractère bizarre, ça veut surement dire que ton header n'est pas correc.... tu as surement quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Content-Type : text/html
    or il faudrait que tu ais quelque chose dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Content-type: image/png
    Enfin, bon, je ne sais pas si tu le sais, mais en fait, les navigateurs possède un système de cache... donc, je suis pas sur que ton idée de lecture d'image en php soit vraiment pertinente. Enfin, ça alourdi le php et ça n'accélère pas spécialement du coté utilisateur... si tu charge une image sur une page, sur la page suivante, la même image sera déjà dans le cache... Enfin, je ne sais pas si cela correspond à ton problème.


    Cordialement,
    Patouche

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut
    Quand j'utilise avec le fichier externe image.php ça marche. C'est quand je veut mettre le readfile dans la même page que le code que ça ne fonctionne pas mais je vais essayé de voir si en mettant des headers ça marcherai

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut
    Bon j'ai rajouter en haut de ma page


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-type: image/png");
    et je reçoit comme message :

    L'image “http://127.0.0.1/eclipse/tuto_ubuntu/test5.php” ne peut être affichée car elle contient des erreurs.

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Citation Envoyé par julien1451 Voir le message
    .... C'est quand je veut mettre le readfile dans la même page que le code que ça ne fonctionne pas....
    Ca c'est normal que ça ne fonctionne pas.... Et je ne crois pas qu'en procédant ainsi ça risque de marcher un jour... Si tu souhaites et lire retourner une image en php, il ne faut pas que tu retournes Bonjour avant et au revoir après dans le code de ton image... c'est impossible.... Tu dois ressortir un header de type image...

    Si tu souhaites vraiment renvoyer une image via php, il ne faut retourner que l'image et rien d'autre au navigateur... Comment tu souhaites faire sinon ??.... Tu aurais du html qui ressemblerait à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="Bonjour %imq et plein de truc incompréhensible qui sont juste l'interprétation en utf8 de ton image % Au revoir" />
    ...

    Ca ne peut pas marcher....

    Patouche

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut
    Donc si c'est impossible dans le même fichier, tant pis je le fais dans un fichier externe. Ca c'est sur que ça marche. C'est dommage car j'aurais bien aimé regardé avec firebug le nombre de fois que l'image aurait été chargé. Si je fait comme j'ai marqué dans le Post #1, et que je met 7 fois la même image. L'image ne sera bien chargé que une fois ?

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    As tu lu mon premier message ???....

    Oui ton image ne sera chargée qu'une seule fois... et cela même si tu l'as modifié en cours de route, tu auras partout la même image.... C'est le cache du navigateur....

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut
    Ouais j'ai lu ton premier post, tu dis que mon idée n'est pas pertinente mais je cherche une méthode qui permet de charger 1 fois une image pour la réutilisé pour les autres au lieu de la télécharger 7 fois alors j'ai essayé de voir par php si c'était possible.

  9. #9
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    Et bien, ce que tu cherche à faire, le navigateur le fait tout seul...

    En html :

    Si tu écrit une page ou tu affiches 3 fois http://toto.com/image.jpg et bien le navigateur ne la charge qu'une seule fois... image.jpg et il utilise ce qu'il a reçu la première fois pour les 2 autres images

    Tu changes de page, le navigateur utilisera ce qui est dans le cache. Pas besoin de la "retélécharger"

    Par contre en php :

    Si tu as image.php 3 fois dans ta page, le navigateur charge une fois image.php et il utilise ce qu'il a recu de la première image pour les 2 autres images à afficher. Par contre, entre temps, toi, de ton coté, tu peux avoir modifier image.php. Tu n'auras donc pas le résultat escompté.

    C'est plus clair ??

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut
    Bah ce que tu dit au départ que le navigateur charge 1 fois l'image puis l'utilise pour les autres, ben sur mon navigateur, quand je regarde sur FireBug ça me charge 7 fois la même image. Ce n'est qu'une fois que la mise en cache est faite que l'image n'est chargé qu'une fois.

  11. #11
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Points : 273
    Points
    273
    Par défaut
    ah... et bien je viens de tester avec firebug et dragonfly (opera) et je n'ai absolument pas ça comme résultat... Regardes plutôt du coté de ton navigateur... Firebug ?? Webdevelopper ?... Aucune idée, je n'ai jamais rencontré ce soucis....

    Patouche

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 89
    Points : 78
    Points
    78
    Par défaut
    Ben je sais pas que ce soit le firefox sur mon linux ou mon XP Virtuel, j'ai le même résultat. Lorsque je vide le cache, il me charge tous les éléments autant de fois que je les appelles donc pour certaines images 7 fois. Mais après lorsque je réactualise sans vider le cache, les éléments sont charger une fois même si je les appelles 7 fois dans le code. Je ne pense pas que ça vienne de mon serveur puisque la mise en cache se fait coté client.

    EDIT : C'est bon j'ai trouvé le problème, j'ai fait un test en vidant le cash dans les paramètres de FF et j'ai mis FireBug en persistant et ça m'a correctement charger la page. Le fait de faire ctrl+F5 inhibe apparemment l'utilisation du cash.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/09/2014, 15h11
  2. Récupérer une image avec un socket?
    Par sfn84 dans le forum C++Builder
    Réponses: 7
    Dernier message: 13/04/2011, 14h54
  3. Réponses: 4
    Dernier message: 29/10/2010, 14h40
  4. Récupérer taille d'une image avec IE
    Par olbouss dans le forum jQuery
    Réponses: 5
    Dernier message: 03/11/2009, 09h20
  5. Réponses: 4
    Dernier message: 07/06/2006, 14h23

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