我正在尝试创建一个脚本来将图像下载到本地服务器,并且我在下载图像时遇到了一些问题。我在标准图像(http://www.urmob.co.uk/i/l/2860.jpg)上测试了以下脚本,并且在尝试从以下位置下载图像时工作正常
它没有文件内容,因此图像不起作用。我相信它与HTTPS有关?我最初尝试了标准的file_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);
}
有谁知道为什么这不起作用?
谢谢,
克雷格
答案 0 :(得分:1)
这很简单:
<强> 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);
答案 1 :(得分:0)
您正在从ssl网址获取图片,试图删除https并使用http
或尝试添加: -
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);