Enregistrer une image via url

parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -  
NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
c'est une question maintes fois posée mais je ne trouve pas de solution sur internet.
Tout est dans le titre, je veux créer une fonction qui prend une url en entrée et qui enregistre l'image associée (si elle existe) dans le répertoire de mon site.
Alors j'ai essayé pas mal de trucs dont :


function save_picture($url)
{
$photo = 'Monrepertoire/Images/image.png';
$content = file_get_contents($url);
file_put_contents($photo, $content);
}


donc ça ne fonctionne pas. J'ai aussi essayé bêtement :


function save_picture($url)
{
$photo = 'Monrepertoire/Images/image.png';
copy($url, $photo);
}


Et ça ne fonctionne pas, en chemin absolu ou relatif pour $photo.

J'ai vu qu'il y avait un allow_url_fopen à modifier dans le php.ini. Mais je suis en mutualisé, je ne sais pas si je peux modifier comme ça. Sinon avec un ini_set dans le code ça peut fonctionner ?

Bref, à l'aide !!!
A voir également:

2 réponses

NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Si ton hébergeur l'autorise, tu peux utiliser "curl " qui te permet de télécharger un fichier.
0
parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   6
 
Merci pour ta réponse, j'ai essayé du côté de Curl mais toujours rien... Voilà mon code :

function grab_image($url,$saveto){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$raw=curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
}

$_GET['pic'] = "https://scontent-cdg2-1.xx.fbcdn.net/hphotos-xfa1/v/t1.0-9/XXXXXXXXXXXXXXXXXXXX.jpg?oh=XXXXXXXXXXXXXXXXXXXXX";

if(!empty($_GET['pic']))
{
$url = $_GET['pic'];
$name_photo = 'Images/double_izy.jpg';
grab_image($url, $name_photo);

}



L'url est une photo de profil facebook, je ne sais pas si ça change grand chose...
0
NHenry Messages postés 15221 Date d'inscription   Statut Modérateur Dernière intervention   366
 
Tout dépend de ton hébergeur, si il a bloqué (pour des raisons de sécurités) les appels sortants du serveur, tu ne pourras rien faire.
0