PHP 获取远程文件大小常用方法总结

1、fsockopen

 代码如下 复制代码

<?php
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("http://www.111cn.netnet/")
?>

2、使用file_get_contents()

 代码如下 复制代码

<?php
$file = file_get_contents($url);
echo strlen($file);
?>

3. 使用get_headers()

 代码如下 复制代码

<?php
$header_array = get_headers($url, true);

//返回结果
Array
(
    [0] => HTTP/1.1 200 OK
    [Date] => Sat, 29 May 2004 12:28:14 GMT
    [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
    [ETag] => "3f80f-1b6-3e1cb03b"
    [Accept-Ranges] => bytes
    [Content-Length] => 438
    [Connection] => close
    [Content-Type] => text/html
)
 

$size = $header_array['Content-Length'];
echo $size;
?>

4.curl

 代码如下 复制代码

function remote_filesize($uri,$user='',$pw='')
{
    // start output buffering
    ob_start();
    // initialize curl with given uri
    $ch = curl_init($uri);
    // make sure we get the header
    curl_setopt($ch, CURLOPT_HEADER, 1);
    // make it a http HEAD request
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    // if auth is needed, do it here
    if (!emptyempty($user) && !emptyempty($pw))
    {
        $headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    $okay = curl_exec($ch);
    curl_close($ch);
    // get the output buffer
    $head = ob_get_contents();
    // clean the output buffer and return to previous
    // buffer settings
    ob_end_clean();
 
    echo '<br>head-->'.$head.'<----end <br>';
 
    // gets you the numeric value from the Content-Length
    // field in the http header
    $regex = '/Content-Length:s([0-9].+?)s/';
    $count = preg_match($regex, $head, $matches);
 
    // if there was a Content-Length field, its value
    // will now be in $matches[1]
    if (isset($matches[1]))
    {
        $size = $matches[1];
    }
    else
    {
        $size = 'unknown';
    }
    //$last=round($size/(1024*1024),3);
    //return $last.' MB';
    return $size;
}

时间: 2024-11-03 11:32:51

PHP 获取远程文件大小常用方法总结的相关文章

PHP 获取远程文件大小的3种解决方法

以下是对PHP中获取远程文件大小的3种解决方法进行了详细的介绍,需要的朋友参考下   1.使用file_get_contents() 复制代码 代码如下: <?php $file = file_get_contents($url); echo strlen($file); ?> 2. 使用get_headers() 复制代码 代码如下: <?php $header_array = get_headers($url, true); $size = $header_array['Conten

ASP函数获取远程文件大小,可用于版本更新检测

ASP函数获取远程文件大小,可以用于版本更新检测等 <% '----------------------------------------------------------- '功能:获取远程文件大小 '参数:url 远程文件地址 '返回:远程文件大小(单位:字节) '----------------------------------------------------------- Function getRemoteFileSize(url)     Dim xmlHTTP     S

ASP获取远程文件大小信息(通过header头信息)

文件大小|远程文件|header ASP获取远程文件的通过header头信息,并返回远程文件大小信息,远程文件可以是网页或RAR,EXE任何格式的文件. 以下的代码是由阿里西西alixixi.com提供的最简化的写法. 以下是引用片段:<% 'ASP获取远程文件大小方法1 set xml = Server.CreateObject("MSXML2.XMLHTTP") xml.open "GET","http://www.alixixi.com/dow

php获取远程文件大小及信息的函数(header头信息获取)

函数|文件大小|远程文件|header php获取远程文件大小及信息的函数(header头信息获取) 阿里西西Alixixi.com开发团队在做一个客户系统时,需要做远程下载的功能,并实时显示进度条效果. 所以,需要预先读取远程文件的大小信息,然后做为实时下载进度条的参数. 功能函数如下,调用很简单,getFileSize("http://www.alixixi.com/download/xml.rar") ,就可以获取远程文件的大小了. 以下是引用片段:<?php functi

Python获取远程文件大小的函数代码分享_python

复制代码 代码如下: def getRemoteFileSize(url, proxy=None):    """ 通过content-length头获取远程文件大小        url - 目标文件URL        proxy - 代理  """    opener = urllib2.build_opener()    if proxy:        if url.lower().startswith('https://'):    

php获取远程文件大小_php技巧

本文实例讲述了php获取远程文件大小的方法,分享给大家供大家参考.具体实现方法如下: /* **功能:获取远程文件的大小,返回值的单位是:字节 */ function get_fileSize($url){ if(!isset($url)||trim($url)==''){ return ''; } ob_start(); $ch=curl_init($url); curl_setopt($ch,CURLOPT_HEADER,1); curl_setopt($ch,CURLOPT_NOBODY,

php下载远程大文件(获取远程文件大小)的实例

废话不多说,直接上代码 <?php // 暂不支持断点续传 // $url = 'http://www.mytest.com/debian.iso'; 不知道为何获取本地文件大小为0 $url = 'http://192.168.8.93/download/vm-672/18/0.vmdk'; $file = basename($url); $header = get_headers($url, 1); $size = $header['Content-Length']; $fp = fopen

获取远程文件大小的php函数_php技巧

复制代码 代码如下: <?php 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.1\r\n"); fputs($fp,

php4如何获取远程文件大小类

 /*    */  代码如下 复制代码 if(!function_exists('get_headers')) {     function get_headers($url,$format=0)     {         $url=parse_url($url);         $end = " ";         $fp = fsockopen($url['host'], (empty($url['port'])?80:$url['port']), $errno, $err