Как загрузить файл на сервер через ссылку?
function downloadFile ($URL, $PATH) {
    $ReadFile = fopen ($URL, "rb");
    if ($ReadFile) {
        $WriteFile = fopen ($PATH, "wb");
        if ($WriteFile){
            while(!feof($ReadFile)) {
                fwrite($WriteFile, fread($ReadFile, 4096 ));
            }
            fclose($WriteFile);
        }
        fclose($ReadFile);
    }
}
Метод отлично работает на больших объемах.
Можете также реализовать через сокеты. Тоже няшка получается.
1. Берем через file_get_contents() или fopen() ссылку в переменную.
2. Пишем эту переменную в файл с помощью fwrite()
До пункта один хорошо бы проверить размер файла, а то картинка может весить много гигабайт.