Rechercher : dans
Par :

Copier une image a partir de son lien url ?

Dernière réponse le 27 jui 2008 à 16:17:47 roswelllge, le 27 jui 2008 à 14:52:07 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « Copier une image a partir de son lien url ? » dans :
[Linux] Débuter sous Linux VoirDÉBUTER SOUS LINUX Qu'est-ce que Linux ? Si vous venez de Windows I - LES LIVE-CDS I-1 Quelles distributions choisir ? I-2 Utilisation II - INSTALLER LINUX II-1 Partitionner son disque dur II-2 Multiboot Windows/Linux II-3 Quelles...
Création d'image Système (Ghost) VoirCréer une image (ghost) de partition 1 - Intérêt 2 - Pré-requis 2.1 - Explication 2.2 - Opportunités des partitions 2.3 - Mise à jour des images 2.3.1 - Image incrémentale : intéressant mais dangereux ! 2.3.2 - Image incrémentale et...
[Webmaster] Empêcher la copie de mes images (et autres) VoirA tous ceux qui veulent empêcher la copie de leurs images, leurs créations, leurs vidéos, leurs articles, etc... Je veux empêcher les autres de copier mes images et mes pages HTML. Comment faire ? Réponse: C'EST IMPOSSIBLE Il n'existe aucun...

1

Kcazer, le 27 jui 2008 à 15:17:20
  • +1

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

Répondre à Kcazer

2

 roswelllge, le 27 jui 2008 à 16:17:47

Merci beaucoups Kcaser pour ces deux méthodes, j'utilise la premiere, car plus simple pour ce que je fais.

Elle marche nikel Merci

Répondre à roswelllge
Collection CommentÇaMarche.net