Les Allergies
Alimentaires
Posez votre question Signaler

Copier une image a partir de son lien url ? [Résolu]

roswelllge 31Messages postés 19 août 2006Date d'inscription - Dernière réponse le 5 janv. 2011 à 17:45
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
Lire la suite 

Copier une image a partir de son lien url »

Suggestions
7 réponses
Réponse
+4
moins plus
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
Ajouter un commentaire
Réponse
-1
moins plus
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 !
Ezechiel - 5 janv. 2011 à 17:42
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é
Ajouter un commentaire
Réponse
-3
moins plus
Merci beaucoups Kcaser pour ces deux méthodes, j'utilise la premiere, car plus simple pour ce que je fais.

Elle marche nikel Merci
bloom - 22 mars 2010 à 19:56
g rien compris merci de me rééxpliquer car j'ai 11 ans !
torettodu41- 26 mars 2010 à 10:26
enregistrer limage puis tu va dan le dossier envoyer vers : ton disk dur
Ezechiel - 5 janv. 2011 à 17:45
@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
Ajouter un commentaire
Ce document intitulé « Copier une image a partir de son lien url ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?