Aller au contenu

Recupérer le contenu d'un fichier redirigé


AntiStatick

Sujets conseillés

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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é par Patrick
Merci d'utiliser la balise [code] ... [/code] pour le code contenu dans ton post.
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...