【问题标题】:Download Image URL - PHP下载图片网址 - PHP
【发布时间】:2014-05-08 09:29:00
【问题描述】:

我正在尝试创建一个脚本来将图像下载到本地服务器,但我在下载图像时遇到了一些问题。我已经在标准图像 (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);
}

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

谢谢,

克雷格

【问题讨论】:

    标签: php curl


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

      您正在从 ssl url 获取图像,试图删除 https 并使用 http

      或尝试添加:-

      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 1970-01-01
        • 2019-02-17
        • 2017-08-03
        • 2016-04-01
        • 1970-01-01
        相关资源
        最近更新 更多