php curl与fopen下载远程服务器图片实例
fopen函数,代码如下:
- <?php
- function get_file($url,$folder,$pic_name){
- set_time_limit(24*60*60); //限制最大的执行时间
- $destination_folder=$folder?$folder.'/':''; //文件下载保存目录
- $newfname=$destination_folder.$pic_name;//文件PATH
- $file=fopen($url,'rb');
- if($file){
- $newf=fopen($newfname,'wb');
- if($newf){
- while(!feof($file)){
- fwrite($newf,fread($file,1024*8),1024*8);
- }
- }
- if($file){
- fclose($file);
- }
- if($newf){
- fclose($newf);
- }
- }
- }
- get_file("/img/baidu_logo.gif","file","baidu.jpg");
- ?>
php curl函数,代码如下:
- /*
- *功能:php多种方式完美实现下载远程图片保存到本地
- *参数:文件url,保存文件名称,使用的下载方式
- *当保存文件名称为空时则使用远程文件原来的名称
- */
- function getImage($url,$filename='',$type=0){
- if($url==''){return false;}
- if($filename==''){
- $ext=strrchr($url,'.');
- if($ext!='.gif' && $ext!='.jpg'){return false;}
- $filename=time().$ext;
- }
- //文件保存路径
- 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($filename,'a');
- fwrite($fp2,$img);
- fclose($fp2);
- return $filename;
- }
开启php curl函数库的步骤:
1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/
2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
3).重启apache