php判断远程图片是否存在并保存在本地
作者: thtomatic 分类: php笔记 评论: [ 0 ] 条 浏览: [ 1184 ] 次
今天公司有个业务是把原先商户在我们平台提交的身份证资料down下来审核(原先就没审核过),代码如下
判断远程是否有图片:
function is_files($url) { if(file_get_contents($url,0,null,0,1)) return true; else return false; }down下远程的图片
function getImage($url,$save_dir='',$filename='',$type=0){ if(trim($url)==''){ return array('file_name'=>'','save_path'=>'','error'=>1); } if(trim($save_dir)==''){ $save_dir='./'; } if(trim($filename)==''){//保存文件名 $ext=strrchr($url,'.'); if($ext!='.gif'&&$ext!='.jpg'&&$ext!='.png'&&$ext!='.jpeg'){ return array('file_name'=>'','save_path'=>'','error'=>3); } $filename=time().rand(0,10000).$ext; } if(0!==strrpos($save_dir,'/')){ $save_dir.='/'; } //创建保存目录 if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){ return array('file_name'=>'','save_path'=>'','error'=>5); } //获取远程文件所采用的方法 if($type){ $ch=curl_init(); $timeout=5; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $img=curl_exec($ch); curl_close($ch); }else{ ob_start(); readfile($url); $img=ob_get_contents(); ob_end_clean(); } //$size=strlen($img); //文件大小 $fp2=@fopen($save_dir.$filename,'a'); fwrite($fp2,$img); fclose($fp2); unset($img,$url); return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); }
使用如下:
getImage(远程图片路径,本地存储路径,本地存储照片的名称,1);
需要注意的就是如果使用mkdir创建文件夹使用中文名称的话得需要规范下编码,不规范的话会出现乱码,保存图片的名称如果是中文也要规范编码
规范编码代码如下:
iconv('utf-8', 'gbk', 文件名称);
版权所有:《thtomatic》 => 《php判断远程图片是否存在并保存在本地》
本文地址:https://ask.mykeji.net/phpnotes/168.html
除非注明,文章均为 《简单记录》 原创,欢迎转载!转载请注明本文地址,谢谢。
发表评论: