Enregistrer une image via url

Fermé
parousky Messages postés 325 Date d'inscription mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 - 15 avril 2016 à 19:18
NHenry Messages postés 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 - 16 avril 2016 à 12:41
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 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 345
15 avril 2016 à 19:25
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 mardi 11 septembre 2012 Statut Membre Dernière intervention 20 février 2022 6
16 avril 2016 à 11:10
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 15164 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 27 novembre 2024 345
16 avril 2016 à 12:41
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