AntiStatick Posté 27 Septembre 2008 Posté 27 Septembre 2008 Salut à tous ! pour un projet, je dois récupérer des infos (largeur, hauteur, poids, vignettes ...) sur des images publiées sur différents site Internet. Jusque la c'est pas très compliqué il suffit de faire un bon vieux getimagesize("http://urldelimage.jpg") La ou cela se complique c'est que certain sites font des redirects vers yahoo.fr, par ex, lorsqu'on accède à l'image en tapant directement sur url ou que l'on y accède via un script PHP ! Pas cool :/ La question est donc y a t'il un moyen de contourner cette redirection pour avoir mes infos et mon thumb (vignette en anglais) ? Par exemple y a t'il moyen de simuler un referer avec un script PHP ? Ou si vous avez la autre moindre idée ca m'intéresse beaucoup !! Merci pour votre aide.
Kioob Posté 27 Septembre 2008 Posté 27 Septembre 2008 Hello, je vois au moins 3 possibilités : 1) utiliser l'extension CURL de PHP pour rapatrier le fichier en question (puis lui faire faire ton getimagesize() ou tout autre traitement). Cette une extension qu'on retrouve souvent et qui gère très bien de nombreux protocoles, dont HTTP. 2) développer ton propre client HTTP qui gérerait les redirections 3) utiliser une des nombreuses classes déjà faites à la place du n°2. Le principe sera de toutes façons le même : télécharger l'image en local pour la traiter. On doit au moins retrouver ça dans PEAR et dans le Zend Framework si tu veux t'en inspirer. PS : si tu te sens d'attaque pour le n°2, il y a sûrement moyen de développer directement un flux et ainsi éviter la phase de stockage local temporaire.
AntiStatick Posté 28 Septembre 2008 Auteur Posté 28 Septembre 2008 (modifié) Salut Kioob ! merci ! Ca marche nikel avec CURL Pour ceux qui veulent savoir comment faire voici le code : <?php$referer = "url-referer";$url = "fichier-a-telecharger";$fp = fopen ($_SERVER['DOCUMENT_ROOT'] . '/ici/le/chemin/fichier.xxx', "w");$ch = curl_init();curl_setopt ($ch, CURLOPT_REFERER, $referer);curl_setopt ($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_setopt ($ch, CURLOPT_FILE,$fp);curl_exec ($ch);curl_close ($ch);?> Modifié 28 Septembre 2008 par Patrick Merci d'utiliser la balise [code] ... [/code] pour le code contenu dans ton post.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant