php 可以获取远程文件的大小,以及本地文件的大小。那么具体该如何操作呢,下面飞鸟慕鱼博客就来和大家说一说!

php get_header() 获取文件的大小

get_headers():可以通过服务器的响应头来判断远程文件是否存在以及获取文件的一些基本信息,包括文件类型,文件大小等

关于 get_headers() 详细信息,可参考:https://www.feiniaomy.com/post/314.html

php代码:

<?php
$url = 'https://oss.feiniaomy.com/zhutichajian/theme_vip.jpg';
$res = get_headers($url,true);   
print_r($res);  
//四舍五入获取将文件大小的单位转换成 MB
$filesize = round($res['Content-Length']/1024/1024,2);
echo '文件大小为:'.$filesize.' MB';
?>

代码执行结果:

//打印结果:
Array
(
    [0] => HTTP/1.1 200 OK
    [Server] => Tengine
    [Content-Type] => image/jpeg
    [Content-Length] => 175042 //这里表示文件的大小
    [Connection] => close
    [EagleId] => 1bdd1e1a15897737749167998e
)
//最后输出结果
文件大小为:0.17 MB

php filesize() 函数获取本地文件的大小

filesize():函数可以返回指定文件的大小,成功则返回文件的字节数,失败返回 false 并生成一条 E_WARNING 级别的错误

示例:

<?php
//这里的代码只是示例,实际应用,应注意判断
$size = filesize("text.txt"); 
//单位转成 KB,这里只是简单的应用,具体的文件大小单位转换方法,参考飞鸟慕鱼博客相关文章
echo round($size/1024,2).' KB';
?>

注意:filesize(),只能获取本地文件大小,不能获取远程文件大小!

php file_get_contents()获取文件内容,strlen()获取内容大小

php file_get_contents() 函数获取文件的内容,再利用 strlen() 获取文件的大小

php代码:

<?php
//先获取文件的内容,可以是远和文件,但不能是压缩包
$conts = file_get_contents("text.txt");
//输入内容的长度(单位为字节)
echo strlen($conts);
?>

php 使用 curl 获取文件的大小

php curl 组件可以做很多的事情,当然它也可以获取一个文件的大小

php代码:

<?php
$url = 'http://www.xxxxx.com/xxxx.zip';
echo getFileSize($url);
//定义一个函数,方便调用
function getFileSize($url){    
    ob_start();    
    $ch = curl_init($url);    
    curl_setopt($ch, CURLOPT_HEADER, 1);    
    curl_setopt($ch, CURLOPT_NOBODY, 1);     
    $okay = curl_exec($ch);   
    curl_close($ch);    
    $head = ob_get_contents();    
    ob_end_clean();
    $regex = '/Content-Length:\s([0-9].+?)\s/';   
    $count = preg_match($regex, $head, $matches);    
    $size = isset($matches[1])?$matches[1]:'unknown';       
    return $size;   
} 
?>