Я пытаюсь создать сценарий для загрузки изображений на локальный сервер, и у меня возникают некоторые проблемы с загрузкой изображений. Я тестировал следующий сценарий на стандартном изображении ( http://img.ruphp.com/php/2860.jpg ) и его рабочий режим, однако, при попытке загрузить изображение из следующего места
http://img.ruphp.com/php/52122ad8-c918-450d-be10-5921c0a870cb.png
У него нет содержимого файла, поэтому изображение не работает. Я считаю, что это связано с HTTPS? Я первоначально попробовал стандартный файл_get_contents, но это не сработало, теперь я пытаюсь использовать CURL-версию, и она все еще не работает. Функция, которую я использую, выглядит следующим образом:
function grab_image($url,$saveto){ $ch = curl_init ($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER,1); $raw=curl_exec($ch); curl_close ($ch); if(file_exists($saveto)){ unlink($saveto); } $fp = fopen($saveto,'x'); fwrite($fp, $raw); fclose($fp); }
Кто-нибудь знает, почему это не работает?
Благодаря,
Craig
Это очень просто:
test.php
<?php // image source $image_url = 'https://s3-eu-west-1.amazonaws.com/mobile-phones-direct/phone/portraitimage/full/52122ad8-c918-450d-be10-5921c0a870cb.png'; // download image file_put_contents('downloaded_image.jpg', file_get_contents($image_url)); // display echo '<img src="downloaded_image.jpg" >';
Меня устраивает:
Если вы хотите использовать версию curl и исправить эту ошибку ssl, добавьте это в свой код:
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
вы получаете изображение из ssl url, пытающегося удалить https и использовать http
или попробуйте добавить: –
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);