Есть два способа выгрузить картинки с другого сайта с помощью php?
1 Способ:
Цитата:
|
<?php
$url = 'https://bipbap.ru/wp-content/uploads/2017/04/priroda_kartinki_foto_03.jpg';
$path = './images2/priroda_kartinki_foto_03.jpg';
file_put_contents($path, file_get_contents($url));
?>
|
2 Способ:
Цитата:
|
<?php
$ch = curl_init('https://bipbap.ru/wp-content/uploads/2017/04/priroda_kartinki_foto_03.jpg');
$fp = fopen('./images/ priroda_kartinki_foto_03.jpg’, 'wb');
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
|
Второй вариант, как и в случае с JavaScript работает не всегда. Ошибок нет, но картинка сохраняется пустой. Если попытаться загрузить ://bipbap.ru/wp-content/uploads/2017/04/priroda_kartinki_foto_03.jpg с помощью JavaScript мы опять получим тоже самое сообщение:
Цитата:
|
Access to Image at 'https://sunflowercreations.org/wp-img/javascript/how-add-canvas-todataurl-in-src.png' from origin 'http://site.su' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://site' is therefore not allowed access.
|
Если попытаться загрузить эту картинку
http://img.yandex.net/i/www/logo.png, то она загрузиться в трех разных примерах.
Что касается почему не всегда работает второй вариант, через CURL, то предположительно по той же самой причине что и JS (хотя и нет ошибок), значит остается первый вариант, который работает всегда. Но один php не годится использовать, надеялась сделать загрузку через progress bar.
Цитата:
|
<progress id="progressX" max="100" value="0"></progress>
|
Можно как-то сделать загрузку из внешнего источника через progress bar?