为了账号安全,请及时绑定邮箱和手机立即绑定

使用curl PHP从URL保存图像

使用curl PHP从URL保存图像

PHP
动漫人物 2019-09-21 14:06:23
我需要使用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);
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

尝试这个:


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


查看完整回答
反对 回复 2019-09-21
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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;

}


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 756 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信