Đây là cách cơ bản nhất:
$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);
Nhưng nếu bạn đang làm rất nhiều việc này (hoặc máy chủ của bạn chặn quyền truy cập tệp vào các hệ thống từ xa), hãy cân nhắc sử dụng CURL, hiệu quả hơn, nhanh hơn một chút và khả dụng trên nhiều máy chủ được chia sẻ hơn.
Bạn cũng có thể giả mạo tác nhân người dùng để trông giống như một máy tính để bàn hơn là một bot!
$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);
Với cả hai trường hợp, bạn có thể muốn chuyển nó qua GD để đảm bảo rằng nó thực sự là một hình ảnh.