Recuperer une image (png) générée en php sur un site distant
Résolu
0cTeT
Messages postés
39
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
la question est dans le titre, je n'arrive pas à récupérer une image générée en php sur un site distant. J'utilise les sockets : j'envoie une requête GET /.../fichier.php avec la fonction send() en utilisant les cookies dans l'entête pour m'identifier (il faut s'authentifier pour pouvoir accéder a la page en php), et ensuite la fonction recv() pour enregistrer la reponse dans une chaine de caractère que j'appelle buffer. Buffer contient donc l'entête html, avec content-type : image/png et normalement les données de l'image générée par la page php. J'affiche buffer avec printf("%s",buffer),l'entête html est affichée, puis ensuite, les données, sauf que ces données sont seulement :
ëPNG
-> (normalement cette flèche est un seul caractère sur la console)
Je pensais obtenir un long flux de données, qui après parsing aurait été isolé de l'entête html puis enregistré dans un fichier avec l'extension png. Mais il semblerait que l'image ne soit pas contenue dans buffer, ou alors c'est moi qui est rien compris ^^. En créant une boucle répétant la fonction recv() (si l'image était envoyée par paquets) je n'ai pas eu des résultats concluants...
Si quelqu'un maitrise les sockets et le téléchargement d'image manuellement ou avec une librairie merci de m'indiquer la procédure !
la question est dans le titre, je n'arrive pas à récupérer une image générée en php sur un site distant. J'utilise les sockets : j'envoie une requête GET /.../fichier.php avec la fonction send() en utilisant les cookies dans l'entête pour m'identifier (il faut s'authentifier pour pouvoir accéder a la page en php), et ensuite la fonction recv() pour enregistrer la reponse dans une chaine de caractère que j'appelle buffer. Buffer contient donc l'entête html, avec content-type : image/png et normalement les données de l'image générée par la page php. J'affiche buffer avec printf("%s",buffer),l'entête html est affichée, puis ensuite, les données, sauf que ces données sont seulement :
ëPNG
-> (normalement cette flèche est un seul caractère sur la console)
Je pensais obtenir un long flux de données, qui après parsing aurait été isolé de l'entête html puis enregistré dans un fichier avec l'extension png. Mais il semblerait que l'image ne soit pas contenue dans buffer, ou alors c'est moi qui est rien compris ^^. En créant une boucle répétant la fonction recv() (si l'image était envoyée par paquets) je n'ai pas eu des résultats concluants...
Si quelqu'un maitrise les sockets et le téléchargement d'image manuellement ou avec une librairie merci de m'indiquer la procédure !
A voir également:
- Recuperer une image (png) générée en php sur un site distant
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement - Accueil - Outils
- Comment recuperer un message supprimé sur whatsapp - Guide
- Quel site remplace coco - Accueil - Réseaux sociaux
- Comment recuperer une video sur youtube - Guide
2 réponses
Bonjour,
printf("%s", buffer); affiche les caractères pointés par buffer jusqu'au premier '\x00' rencontré, ce qui ne doit pas manqué dans un flux binaire.
Que souhaites-tu faire avec l'image une fois téléchargé ?
Cdlt,
printf("%s", buffer); affiche les caractères pointés par buffer jusqu'au premier '\x00' rencontré, ce qui ne doit pas manqué dans un flux binaire.
Que souhaites-tu faire avec l'image une fois téléchargé ?
Cdlt,
Bonjour
Buffer contient donc l'entête html,
Ce n'est pas normal. Une image n'est pas en html.
Je suppose que tu veux parler de l'en-tête HTTP. Si tu mets les en-têtes et les données (l'image) dans un même buffer que tu envoies par print, ça ne marchera jamais : en php, les en-têtes doivent être envoyés avec la fonction header, ensuite tu peux envoyer les données avec print ou echo.
Buffer contient donc l'entête html,
Ce n'est pas normal. Une image n'est pas en html.
Je suppose que tu veux parler de l'en-tête HTTP. Si tu mets les en-têtes et les données (l'image) dans un même buffer que tu envoies par print, ça ne marchera jamais : en php, les en-têtes doivent être envoyés avec la fonction header, ensuite tu peux envoyer les données avec print ou echo.
Méfie-toi de tes habitudes de C. Chez moi, affiche bien "abcdef".
@fiddy et 0cTeT: En fait l'entête d'un fichier PNG contient, à l'endroit où 0cTeT dit que l'affichage s'arrête, un caractère 0x1A (26 en décimal, qui correspond au caractère de contrôle Ctrl-Z, soit EOF sous Windows).
https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
Dal
Toutes mes excuses pour cette intervention inopportune.
Je file creuser un trou et me cacher dedans.
Bonne continuation.