下载图片网址 - PHP

时间:2014-05-08 09:29:00

标签: php curl

我正在尝试创建一个脚本来将图像下载到本地服务器,并且我在下载图像时遇到了一些问题。我在标准图像(http://www.urmob.co.uk/i/l/2860.jpg)上测试了以下脚本,并且在尝试从以下位置下载图像时工作正常

https://s3-eu-west-1.amazonaws.com/mobile-phones-direct/phone/portraitimage/full/52122ad8-c918-450d-be10-5921c0a870cb.png

它没有文件内容,因此图像不起作用。我相信它与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);
}

有谁知道为什么这不起作用?

谢谢,

克雷格

2 个答案:

答案 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" >';

它对我有用:

enter image description here


如果您想继续使用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);