php curl与fopen下载远程服务器图片实例

fopen函数,代码如下:

  1. <?php
  2. function get_file($url,$folder,$pic_name){
  3. set_time_limit(24*60*60); //限制最大的执行时间
  4. $destination_folder=$folder?$folder.'/':''; //文件下载保存目录
  5. $newfname=$destination_folder.$pic_name;//文件PATH
  6. $file=fopen($url,'rb');
  7. if($file){
  8. $newf=fopen($newfname,'wb');
  9. if($newf){
  10. while(!feof($file)){
  11. fwrite($newf,fread($file,1024*8),1024*8);
  12. }
  13. }
  14. if($file){
  15. fclose($file);
  16. }
  17. if($newf){
  18. fclose($newf);
  19. }
  20. }
  21. }
  22. get_file("/img/baidu_logo.gif","file","baidu.jpg");
  23. ?>

php curl函数,代码如下:

  1. /*
  2. *功能:php多种方式完美实现下载远程图片保存到本地
  3. *参数:文件url,保存文件名称,使用的下载方式
  4. *当保存文件名称为空时则使用远程文件原来的名称
  5. */
  6. function getImage($url,$filename='',$type=0){
  7. if($url==''){return false;}
  8. if($filename==''){
  9. $ext=strrchr($url,'.');
  10. if($ext!='.gif' && $ext!='.jpg'){return false;}
  11. $filename=time().$ext;
  12. }
  13. //文件保存路径
  14. if($type){
  15. $ch=curl_init();
  16. $timeout=5;
  17. curl_setopt($ch,CURLOPT_URL,$url);
  18. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  19. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  20. $img=curl_exec($ch);
  21. curl_close($ch);
  22. }else{
  23. ob_start();
  24. readfile($url);
  25. $img=ob_get_contents();
  26. ob_end_clean();
  27. }
  28. $size=strlen($img);
  29. //文件大小
  30. $fp2=@fopen($filename,'a');
  31. fwrite($fp2,$img);
  32. fclose($fp2);
  33. return $filename;
  34. }

开启php curl函数库的步骤:

1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/

2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下

3).重启apache