php获取远程图片并下载保存到本地

分享一个利用php获取远程图片并将远程图片下载保存到本地的函数代码:

  1. /* 
  2. *功能:php完美实现下载远程图片保存到本地 
  3. *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 
  4. *当保存文件名称为空时则使用远程文件原来的名称 
  5. */ 
  6. function getImage($url,$save_dir='',$filename='',$type=0){ 
  7.     if(trim($url)==''){ 
  8.         return array('file_name'=>'','save_path'=>'','error'=>1); 
  9.     } 
  10.     if(trim($save_dir)==''){ 
  11.         $save_dir='./'
  12.     } 
  13.     if(trim($filename)==''){//保存文件名 
  14.         $ext=strrchr($url,'.'); 
  15.         if($ext!='.gif'&&$ext!='.jpg'){ 
  16.             return array('file_name'=>'','save_path'=>'','error'=>3); 
  17.         } 
  18.         $filename=time().$ext
  19.     } 
  20.     if(0!==strrpos($save_dir,'/')){ 
  21.         $save_dir.='/'
  22.     } 
  23.     //创建保存目录 
  24.     if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){ 
  25.         return array('file_name'=>'','save_path'=>'','error'=>5); 
  26.     } 
  27.     //获取远程文件所采用的方法  
  28.     if($type){ 
  29.         $ch=curl_init(); 
  30.         $timeout=5; 
  31.         curl_setopt($ch,CURLOPT_URL,$url); 
  32.         curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
  33.         curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
  34.         $img=curl_exec($ch); 
  35.         curl_close($ch); 
  36.     }else
  37.         ob_start();  
  38.         readfile($url); 
  39.         $img=ob_get_contents();  
  40.         ob_end_clean();  
  41.     } 
  42.     //$size=strlen($img); 
  43.     //文件大小  
  44.     $fp2=@fopen($save_dir.$filename,'a'); 
  45.     fwrite($fp2,$img); 
  46.     fclose($fp2); 
  47.     unset($img,$url); 
  48.     return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0); 

转载请注明:代码家园 » php获取远程图片并下载保存到本地

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)