PHP → Скачать картинку по её url

16.07.2010

Первый вариант будет работать если в php.ini параметр allow_url_fopen равен 1:

$url = 'http://img.yandex.net/i/www/logo.png';
$path = './images/logo.png';
file_put_contents($path, file_get_contents($url));

Второй вариант требует cURL:

$ch = curl_init('http://img.yandex.net/i/www/logo.png');
$fp = fopen('./images/logo.png', 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
Похожие записи

Комментарии

Огромное спасибо, второй вариант пригодился

Гость
12.01.2011, 02:32

Большое человеческое спасибо

Гость
08.02.2011, 16:50

Выручили очень! Большущее спасибо! Выкладывайте подобное почаще!

Гость
09.02.2011, 14:28

Первым способом можно не только картинки, но и файлы загружать

file_get_contents кстати подойдет для этого дела лучше так как работает быстрее, а картинки если по URL качать не защищены и защиту по cURL используя например подмену браузера, реферера, сохранение cookies и прочее делать совсем не нужно.

Я работаю с php давно уже, правда думаю в ближайшее время перейти на питон, а так есть сайт про php, думаю будет полезен новичкам, у меня там большой справочник по php, уроки и для полных нубов система обучения с нуля, вот если что: Мой сайт

Гость
15.09.2012, 13:06

Ololo))) Первый вариант - круть. А copy('откуда', 'куда') не?

Гость
10.03.2013, 19:22

спасибо второй вариант сработал, заменив апостроф двойными кавычками

Гость
21.12.2015, 18:14

даже не ожидал что твой сайт мне первым в google мне выкинет

Оба варианты имеют место быть.
file_get_contents удобнее и быстрее, но многие сайты не дают забирать у них контент с помощью этой опции. Попробуйте скачать картинку с Youtube - с помощью file_get_contents, получите ошибку.

Curl более универсальный способ, который работает везде, так как позволяет при необходимости полностью имитировать действия браузера. Вчера вечером сделал небольшой скрипт для получения превью-картинок видео с ютуба, может кому пригодится )))

Для curl следует добавить CURLOPT_BINARYTRANSFER, т.к в картинках есть любого вида иероглифы.

Добавить комментарий