分享curl下载远程图片到本地

#1 skyzong

/*
* 下载远程图片到本地
* url 远程图片地址
* filename 本地保存图片地址
* 使用 getImg($url,$filename);
*/
function getImg($url = "", $filename = "")
{
    $url = preg_replace( '/(?:^[\'"]+|[\'"\/]+$)/', '', $url );//去除URL连接上面可能的引号
    $hander = curl_init();
    $fp = fopen($filename,'wb');
    curl_setopt($hander,CURLOPT_URL,$url);
    curl_setopt($hander,CURLOPT_FILE,$fp);
    curl_setopt($hander,CURLOPT_HEADER,0);
    curl_setopt($hander,CURLOPT_FOLLOWLOCATION,1);
    //curl_setopt($hander,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,当为false是直接显示出来
    curl_setopt($hander,CURLOPT_TIMEOUT,60);
    curl_exec($hander);
    curl_close($hander);
    fclose($fp);
    Return true;
}


2014-05-23 13:42:41

#2 jake

挺不错的。附带说一下最近遇到的情况,就是当IPv6生效的时候,CURL会使用IPv6来连接,但是对应的域没有IPv6的话会超时,整体看来会有点慢,解决方法是:

加上
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
指定只使用IPv4来连接

2014-05-23 15:28:20