猿问

使用curl PHP从URL保存图像

我需要使用CURL从URL保存图像并将其保存到服务器上的文件夹中。我一直在努力与此代码无济于事。理想情况下,我想获取图像并将其另存为“ photo1”或其他内容。救命!


    function GetImageFromUrl($link)


    {


    $ch = curl_init();


    curl_setopt($ch, CURLOPT_POST, 0);


    curl_setopt($ch,CURLOPT_URL,$link);


    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


    $result=curl_exec($ch);


    curl_close($ch);


    return $result;


    }


    $sourcecode = GetImageFromUrl($iticon);


    $savefile = fopen(' /img/uploads/' . $iconfilename, 'w');

    fwrite($savefile, $sourcecode);

    fclose($savefile);


动漫人物
浏览 757回答 3
3回答

沧海一幻觉

尝试这个: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.ini中启用allow_url_fopen

慕标琳琳

Komang答案的改进版本(添加引荐来源和用户代理,检查是否可以写入文件),如果可以,则返回true,如果有错误,则返回false:public function downloadImage($url,$filename){    if(file_exists($filename)){        @unlink($filename);    }    $fp = fopen($filename,'w');    if($fp){        $ch = curl_init ($url);        curl_setopt($ch, CURLOPT_HEADER, 0);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);        $result = parse_url($url);        curl_setopt($ch, CURLOPT_REFERER, $result['scheme'].'://'.$result['host']);        curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0');        $raw=curl_exec($ch);        curl_close ($ch);        if($raw){            fwrite($fp, $raw);        }        fclose($fp);        if(!$raw){            @unlink($filename);            return false;        }        return true;    }    return false;}
随时随地看视频慕课网APP
我要回答