admin管理员组

文章数量:1567550

2024年7月25日发(作者:)

php 下载远程图片 的几种方法

1.获取远程文件大小及信息的函数

function getFileSize($url){

$url = parse_url($url);

if($fp =

@fsockopen($url[’host’],empty($url[’port’])?80:$url[’port’],$error)){

fputs($fp,"GET ".(empty($url[’path’])?’/’:$url[’path’])." HTTP/1.1rn");

fputs($fp,"Host:$url[host]rnrn");

while(!feof($fp)){

$tmp = fgets($fp);

if(trim($tmp) == ’’){

break;

}else if(preg_match(’/Content-Length:(.*)/si’,$tmp,$arr)){

return trim($arr[1]);

}

}

return null;

}else{

return null;

}

}

echo getFileSize("/download/")

2.图片

//记录程序开始的时间

$BeginTime=getmicrotime();

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("/images/_1978837_detector_ap1

","");

if($img):echo '

php 下载远程图片 的几种方法

';else:echo "false";endif;

//记录程序运行结束的时间

$EndTime=getmicrotime();

//返回运行时间

exit($EndTime-$BeginTime);

3.全文下载图片

if(!empty($saveremoteimg))

{

$body = stripslashes($body);

$img_array = array();

preg_match_all("/(src|SRC)=["|'| ]{0,}(http:(.*).(gif|jpg|jpeg|bmp|png))/isU",

$body,$img_array);

$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);

}

远程文件下载类(支持断点续传)

1).功能:支持断点续传的下载,能计算传输率,能控制传输率

简易使用方法:

$object = new httpdownload();

$object->set_byfile($file);//服务器文件名,包括路径

$object->filename = $filename;//下载另存为的文件名

$object->download();

类文件:

本文标签: 下载图片远程时间记录