php获取远程图片并把它保存到本地,curl与fopen下

fopen函数

例1

 代码如下

 代码如下

<?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各个措施周详兑现下载远程图片保存到地面
*参数:文件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函数

例2

 代码如下

 代码如下

/*
*效益: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

敞开php curl函数库的手续

//
// Function: 获取远程图片并把它保存到地头
//
//
//   明确你有把公文写入本地服务器的权限
// 
//
// 变量表达:
// $url 是长距离图片的完好UWranglerL地址,不能够为空。
// $filename 是可选变量: 即便为空,当半夏件新秀基于时间和日期
// 自动生成.

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

function GrabImage($url,$filename="") {
   if($url==""):return false;endif;

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

   if($filename=="") {
     $ext=strrchr($url,".");
     if($ext!=".gif" && $ext!=".jpg"):return false;endif;
     $filename=date("dMYHis").$ext;
   }

3).重启apache

   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;
}

$img=GrabImage("","");
if($img):echo '<pre><img src="'.$img.'"></pre>';else:echo "false";endif;  

?>

dedecms中的:

 

 代码如下

if(!empty($saveremoteimg))
         {
                 $body = stripslashes($body);
                 $img_array = array();
                 preg_match_all("/(src|SRC)=["|'| ]{0,}();
                 $img_array = array_unique($img_array[2]);
                 set_time_limit(0);
                 $imgUrl = $img_dir."/".strftime("%Y%m%d",time());
                 $imgPath = $base_dir.$imgUrl;
                 $milliSecond = strftime("%H%M%S",time());
                 if(!is_dir($imgPath)) @mkdir($imgPath,0777);
                 foreach($img_array as $key =>$value)
                 {
                         $value = trim($value);
                         $get_file = @file_get_contents($value);
                         $rndFileName = $imgPath."/".$milliSecond.$key.".".substr($value,-3,3);
                         $fileurl = $imgUrl."/".$milliSecond.$key.".".substr($value,-3,3);
                         if($get_file)
                         {
                                 $fp = @fopen($rndFileName,"w");
                                 @fwrite($fp,$get_file);
                                 @fclose($fp);
                         }
                         $body = ereg_replace($value,$fileurl,$body);
                 }
                 $body = addslashes($body);
         }
?>

例4

 代码如下

<?php
//
// Function: 获取远程图片并把它保存到地头
//
//
// 明确你有把公文写入本地服务器的权限
//
//
// 变量表达:
// $url 是远程图片的欧洲经济共同体U本田CR-VL地址,无法为空。
// $filename 是可选变量: 即便为空,当地文件大将基于时间和日期// 自动生成.
function GrabImage($url,$filename='') {
if($url==''):return false;endif;
if($filename=='') {
$ext=strrchr($url,'.');
if($ext!='.gif' && $ext!='.jpg'):return false;endif;$filename=date('dMYHis').$ext;
}
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;
}
$img=GrabImage('','');
if($img){echo '<pre><img src='.$img.'></pre>';}else{echo 'false';}
?>

本文由365bet体育在线官网发布于365bet,转载请注明出处:php获取远程图片并把它保存到本地,curl与fopen下

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。