Первый вариант будет работать если в 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);
Комментарии
Огромное спасибо, второй вариант пригодился
Большое человеческое спасибо
Выручили очень! Большущее спасибо! Выкладывайте подобное почаще!
Первым способом можно не только картинки, но и файлы загружать
file_get_contents кстати подойдет для этого дела лучше так как работает быстрее, а картинки если по URL качать не защищены и защиту по cURL используя например подмену браузера, реферера, сохранение cookies и прочее делать совсем не нужно.
Я работаю с php давно уже, правда думаю в ближайшее время перейти на питон, а так есть сайт про php, думаю будет полезен новичкам, у меня там большой справочник по php, уроки и для полных нубов система обучения с нуля, вот если что: Мой сайт
Ololo))) Первый вариант - круть. А copy('откуда', 'куда') не?
2-й вариант не работает.
спасибо второй вариант сработал, заменив апостроф двойными кавычками
thanks
Спасибо) помог второй вар
даже не ожидал что твой сайт мне первым в google мне выкинет
Оба варианты имеют место быть.
file_get_contents удобнее и быстрее, но многие сайты не дают забирать у них контент с помощью этой опции. Попробуйте скачать картинку с Youtube - с помощью file_get_contents, получите ошибку.
Curl более универсальный способ, который работает везде, так как позволяет при необходимости полностью имитировать действия браузера. Вчера вечером сделал небольшой скрипт для получения превью-картинок видео с ютуба, может кому пригодится )))
а с https что ДЕЛАТЬ?
Для curl следует добавить CURLOPT_BINARYTRANSFER, т.к в картинках есть любого вида иероглифы.
http://php.net/manual/ru/function.curl-setopt.php
Не работает в виде:
$ch = curl_init('http://img.yandex.net/i/www/logo.png'); - работает
===============
$link = 'http://img.yandex.net/i/www/logo.png';
$ch = curl_init($link);
- это не работает...
в данном случае var_dump во 2варианте показывает на 1 символ больше. Может из за этого
Добавить комментарий