@Xveeder

Как скачать изображение с сайта на HTTPS?

Доброго времени суток, товарищи. Возникла потребность скачать изображения по прямой ссылки с сайта. Сам сайт на HTTPS, при скачке изображения полностью пустые (изображения скачиваются, но весят по 0 байт).

//Функция для сохранения изображения через CURL
function save_image($img,$path){

	$curl = curl_init($img);
	curl_setopt($curl, CURLOPT_HEADER, 0);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_BINARYTRANSFER,1);
	$content = curl_exec($curl);
	curl_close($curl);

	if (file_exists($path)) :
		unlink($path);
	endif;
	$fp = fopen($path,'x');
	fwrite($fp, $content);
	fclose($fp);
}

//Скачиваю

save_image('https://media.istockphoto.com/photos/two-red-balloons-picture-id505640210?k=6&m=505640210&s=612x612&w=0&h=cr76FHFVLlU1y-artTN3-T77P1XzTwbfou2zjLlZxms=', realpath(dirname(__FILE__)) . '/image/505640210.jpg');


Есть предположение, что это из-за сертификата. Ваши варианты, господа?
Спасибо.
  • Вопрос задан
  • 906 просмотров
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега PHP
Вечер добрый.
Код вполне рабочий, картинка загружается.
5a0892d159eed265119625.jpeg
Права на запись в директорию image есть?

p.s.
Вот это я бы заменил
$fp = fopen($path,'x');
  fwrite($fp, $content);
  fclose($fp);

p.s.s
Весь Ваш код можно заменить на следующий
$link = 'https://media.istockphoto.com/photos/two-red-balloons-picture-id505640210?k=6&m=505640210&s=612x612&w=0&h=cr76FHFVLlU1y-artTN3-T77P1XzTwbfou2zjLlZxms=';

copy($link, realpath(dirname(__FILE__)) . '/image/505640210.jpg');
Ответ написан
Stalker_RED
@Stalker_RED
Попробуйте добавить:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);


Чтобы увидеть ошибки можно сделать так:
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('php://output', 'w'));


if (file_exists($path)) : // wtf?
    unlink($path);
  endif; // синтаксис шаблонов, зачем он здесь?


Вообще все сохранение можно заменить на file_put_contents
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы