Hier ist der grundlegendste Weg:
$url = "http://other-site/image.png";
$dir = "/my/local/dir/";
$rfile = fopen($url, "r");
$lfile = fopen($dir . basename($url), "w");
while(!feof($url)) fwrite($lfile, fread($rfile, 1), 1);
fclose($rfile);
fclose($lfile);
Wenn Sie jedoch viel und viel davon tun (oder Ihr Host den Dateizugriff auf Remote-Systeme blockiert), sollten Sie CURL verwenden, das effizienter, etwas schneller und auf gemeinsam genutzten Hosts verfügbar ist.
Sie können den Benutzeragenten auch so fälschen, dass er eher wie ein Desktop als wie ein Bot aussieht!
$url = "http://other-site/image.png";
$dir = "/my/local/dir/";
$lfile = fopen($dir . basename($url), "w");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
curl_setopt($ch, CURLOPT_FILE, $lfile);
fclose($lfile);
curl_close($ch);
In beiden Fällen möchten Sie es möglicherweise über GD weiterleiten, um sicherzustellen, dass es sich wirklich um ein Bild handelt.