Copier une image a partir de son lien url ?

Résolu
roswelllge Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
 Gérome -
Bonjour,
je voudrais enregistrer une image qui se trouve sur internet vers mon disque dur.
Comment je pourrais le faire en php ? (j'utilise wamp)
Merci d'avance
A voir également:

3 réponses

Kcazer Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   21
 
Bonjour,

Voila deux solutions, chacune avec leurs avantages et inconvénients:
- Le méthode simple, code très court, mais aucune vérification des erreurs:
<?php
// L'url du fichier
$url = 'http://url.de/l_image';
// Le chemin de sauvegarde
$path = '';
// On recup le nom du fichier
$name = array_pop(explode('/',$url));
// On copie le fichier
copy($url,$path.'/'.$name);
?>


- Le méthode que je conseille fortement, le code est plus long, mais affiche un message en cas d'erreur, et permet de récuperer les images même sur les sites qui utilisent une protection anti-leech.
<?php
// L'url du fichier
$url = 'http://url.de/l_image';
// Le chemin de sauvegarde
$path = '';
// On coupe le chemin
$exp = explode('/',$url);
// On recup l'adresse du serveur
$serv = $exp[0].'//'.$exp[2];
// On recup le nom du fichier
$name = array_pop($exp);
// On genere le contexte (pour contourner les protections anti-leech)
$xcontext = stream_context_create(array("http"=>array("header"=>"Referer: ".$serv."\r\n")));
// On tente de recuperer l'image
$content = file_get_contents($url,false,$xcontext);
if ($content === false) {
	echo "\nImpossible de récuperer le fichier.";
	exit(1);
}
// Sinon, si c'est bon, on sauvegarde le fichier
$test = file_put_contents($path.'/'.$name,$content);
if ($test === false) {
	echo "\nImpossible de sauvegarder le fichier.";
	exit(1);
}
// Tout est OK
echo "\nSauvegarde effectuée avec succés.";
?>


Il est possible de transformer legerement ces deux scripts pour en faire des fonctions, par exemple pour prendre l'url en parametre, et qui retourne true ou false selon le resultat ;]
Idem pour le nom du fichier, ici il est récupéré directement depuis l'url, et aucune verfication n'est faite (si jamais un fichier du meme nom existe deja).

PS: La seconde méthode necessite php 5 au minimum, pour l'utilisation de file_put_contents et des xcontext avec file_get_contents
10
jobijoba
 
Superbe !
Merci :)
0
AdminKr
 
je voudrais savoir c'est grâce ton Codage la on peu récupéré les photo d'une page Facebook est les affiché sur ton site sans avoir besoin de les télécharge est les ajouté sur son Ftp ??
0
G&eacute;rome
 
Script bien fait, merci
0
Max
 
Bonjour
Moi je chercha la même chose, mais 'copier une image a partir de son url vers un serveur local'
Qualqu'un à une idée ?
Merci !
0
Ezechiel
 
Hello,

Kcazer te donne les 2 solutions pour faire se que tu demandes en commentaire,
apprend juste php et tu comprendra son script, qu'il a deja sacrement detaillé
0
roswelllge Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   12
 
Merci beaucoups Kcaser pour ces deux méthodes, j'utilise la premiere, car plus simple pour ce que je fais.

Elle marche nikel Merci
-2
bloom
 
g rien compris merci de me rééxpliquer car j'ai 11 ans !
0
torettodu41 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
enregistrer limage puis tu va dan le dossier envoyer vers : ton disk dur
0
Ezechiel
 
@Bloom: expliquer quoi?
tu as 11ans et tu veux deja dev?
bah alors php.net si tu comprend pas les fonctions qu'il utilise,
sinon ses commentaires sont tres explicites
0