首页 > 网站 > 建站经验 > 正文

php利用curl获取远程图片实现方法

2019-11-02 14:10:39
字体:
来源:转载
供稿:网友

curl要求php环境支持才行,可以运行phpinfo()函数是否支持,一般要将php.ini中;extension=php_curl.dll前的;去掉,重新启动IIS或者APACHE就可以了。
代码如下:

/**@通过curl方式获取指定的图片到本地*@ 完整的图片地址*@ 要存储的文件名*/function getImg($url = "", $filename = ""){ //去除URL连接上面可能的引号 //$url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $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;}

调用时,直接getImg("/logo.jpg","upload/image.jpg")

实现代码2
代码如下:

<?php$url = "图片绝对地址/thumbnail.jpg";$filename = 'curl.jpg';getImg($url, $filename);/* *@通过curl方式获取制定的图片到本地 *@ 完整的图片地址 *@ 要存储的文件名 */function getImg($url = "", $filename = "") { if(is_dir(basename($filename))) {  echo "The Dir was not exits";  return false; } //去除URL连接上面可能的引号 $url = preg_replace( '/(?:^['"]+|['"/]+$)/', '', $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); /*$options = array(  CURLOPT_URL=> '/thum-f3ccdd27d2000e3f9255a7e3e2c4880020110622095243.jpg',  CURLOPT_FILE => $fp,  CURLOPT_HEADER => 0,  CURLOPT_FOLLOWLOCATION => 1,  CURLOPT_TIMEOUT => 60 ); curl_setopt_array($hander, $options); */ curl_exec($hander); curl_close($hander); fclose($fp); return true;}?>

curl_setopt 为CURL调用设置一个选项
bool curl_setopt (int ch, string option, mixed value)
curl_setopt()函数将为一个CURL会话设置选项。option参数是你想要的设置,value是这个选项给定的值。
下列选项的值将被作为长整形使用(在option参数中指定):
CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小。
CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值。
CURLOPT_HEADER: 如果你想把一个头包含在输出中,设置这个选项为一个非零值。
CURLOPT_NOPROGRESS: 如果你不会PHP为CURL传输显示一个进程条,设置这个选项为一个非零值。
注意:PHP自动设置这个选项为非零值,你应该仅仅为了调试的目的来改变这个选项。
CURLOPT_NOBODY: 如果你不想在输出中包含body部分,设置这个选项为一个非零值。
CURLOPT_FAILONERROR: 如果你想让PHP在发生错误(HTTP代码返回大于等于300)时,不显示,设置这个选项为一人非零值。默认行为是返回一个正常页,忽略代码。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表