PHP实现的下载远程图片自定义函数分享
<?php /** *PHP下载远程图片到本地 * *@param$urlstring远程文件地址 *@param$filenamestring保存后的文件名(为空时则为随机生成的文件名,否则为原文件名) *@param$fileTypearray允许的文件类型 *@param$dirNamestring文件保存的路径(路径其余部分根据时间系统自动生成) *@param$typeint远程获取文件的方式 *@returnjson返回文件名、文件的保存路径 *@authorblog.snsgou.com */ functiongetImage($url,$fileName='',$dirName,$fileType=array('jpg','gif'),$type=1) { if($url=='') { returnfalse; }
//获取文件原文件名 $defaultFileName=basename($url);
//获取文件类型 $suffix=substr(strrchr($url,'.'),1); if(!in_array($suffix,$fileType)) { returnfalse; }
//设置保存后的文件名 $fileName=$fileName==''?time().rand(0,9).'.'.$suffix:$defaultFileName;
//获取远程文件资源 if($type) { $ch=curl_init(); $timeout=15;//超时时间 curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $file=curl_exec($ch); curl_close($ch); } else { ob_start(); readfile($url); $file=ob_get_contents(); ob_end_clean(); }
//设置文件保存路径 $dirName=$dirName.'/'.date('Y',time()).'/'.date('m',time()).'/'.date('d',time()).'/'; if(!file_exists($dirName)) { mkdir($dirName,0777,true); }
//保存文件 $res=fopen($dirName.$fileName,'a'); fwrite($res,$file); fclose($res);
return"{'fileName':$fileName,'saveDir':$dirName}"; }
//举例 //返回:{'fileName':13668030896.jpg,'saveDir':/www/test/img/2013/04/24/} echogetImage('http://img.wan.renren.com/images/2013/0430/1367294093164.jpg','','d:/PHP/data',array('jpg','gif'),1);