가장 기본적인 방법은 다음과 같습니다.
$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);
그러나이 작업을 많이 수행하거나 호스트가 원격 시스템에 대한 파일 액세스를 차단하는 경우 CURL을 사용하는 것이 좋습니다. CURL은 더 효율적이고 약간 더 빠르며 더 많은 공유 호스트에서 사용할 수 있습니다.
봇이 아닌 데스크톱처럼 보이도록 사용자 에이전트를 스푸핑 할 수도 있습니다!
$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);
두 경우 모두 GD를 통해 전달하여 실제로 이미지인지 확인할 수 있습니다.