PHP を使用してリモート画像を取得し、リモート画像をダウンロードしてローカルに保存する関数コードを共有します:
<p>/*</p>*功能:php完美实现下载远程图片保存到本地<br />*参数:文件url,保存文件目录,保存文件名称,使用的下载方式<br />*当保存文件名称为空时则使用远程文件原来的名称<br />*/<br />function getImage($url,$save_dir='',$filename='',$type=0){<br /> if(trim($url)==''){<br /> return array('file_name'=>'','save_path'=>'','error'=>1);<br /> }<br /> if(trim($save_dir)==''){<br /> $save_dir='./';<br /> }<br /> if(trim($filename)==''){//保存文件名<br /> $ext=strrchr($url,'.');<br /> if($ext!='.gif'&&$ext!='.jpg'){<br /> return array('file_name'=>'','save_path'=>'','error'=>3);<br /> }<br /> $filename=time().$ext;<br /> }<br /> if(0!==strrpos($save_dir,'/')){<br /> $save_dir.='/';<br /> }<br /> //创建保存目录<br /> if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){<br /> return array('file_name'=>'','save_path'=>'','error'=>5);<br /> }<br /> //获取远程文件所采用的方法 <br /> if($type){<br /> $ch=curl_init();<br /> $timeout=5;<br /> curl_setopt($ch,CURLOPT_URL,$url);<br /> curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);<br /> curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);<br /> $img=curl_exec($ch);<br /> curl_close($ch);<br /> }else{<br /> ob_start(); <br /> readfile($url);<br /> $img=ob_get_contents(); <br /> ob_end_clean(); <br /> }<br /> //$size=strlen($img);<br /> //文件大小 <br /> $fp2=@fopen($save_dir.$filename,'a');<br /> fwrite($fp2,$img);<br /> fclose($fp2);<br /> unset($img,$url);<br /> return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);<br />}