教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 php文件大小格式化函数大全

php文件大小格式化函数大全

发布时间:2018-02-10   编辑:jiaochengji.com
本文分享下php文件大小格式化的一些函数,将文件大小格式化为易于阅读的格式,有需要的朋友参考下。

在php编程中,有时需要对文件大小进行细微处理,即常说的文件大小格式化操作。

php中有一个系统自带的计算文件大小的函数,就是filesize(),但是这个函数是以字节为单位的,在一些情况下,需要很直观的了解一个文件大小,就不仅仅需要字节b这个单位了,还需要kb,mb,gb,甚至更大tb,pb,所以需要自己写一些函数来格式化filesize()的输出结果。

比如碰到一个很大的文件有49957289167b,这么一长串的数字后面单位是字节b,还是不知道这个文件的大小是一个什么概念。
把它转换成gb为单位,就是46.53gb。

例子,php文件大小格式化函数汇总。
 

复制代码 代码示例:

<?php
//转换单位
function setupsize($filesize) {
    $size = sprintf("%u", $filesize);
    if($size == 0) {
         return("0 bytes");
    }
    $sizename = array(" bytes", " kb", " mb", " gb", " tb", " pb", " eb", " zb", " yb");
    return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i];
}
function byte_format($size, $dec=2){
    $a = array("b", "kb", "mb", "gb", "tb", "pb");
    $pos = 0;
    while ($size >= 1024) {
         $size /= 1024;
           $pos++;
    }
    return round($size,$dec)." ".$a[$pos];
 }
/* use : echo format_size(filesize("fichier"));
example result : 13,37 ko */
function format_size($o) {
    $size = array('go' => 1073741824, 'mo' => 1048576, 'ko' => 1024, 'octets' => 1);
    foreach ($size as $k => $v)
        if ($o >= $v) {
                if ($k == 'octets')
                        return round($o).' '.$k;
                return number_format($o / $v, 2, ',', ' ').' '.$k;
        }
}
/**
 * 文件大小格式化
 * @param integer $size 初始文件大小,单位为byte
 * @return array 格式化后的文件大小和单位数组,单位为byte、kb、mb、gb、tb
 */
function file_size_format($size = 0, $dec = 2) {
    $unit = array("b", "kb", "mb", "gb", "tb", "pb");
    $pos = 0;
    while ($size >= 1024) {
        $size /= 1024;
        $pos++;
    }
    $result['size'] = round($size, $dec);
    $result['unit'] = $unit[$pos];
    return $result['size'].$result['unit'];
} // www.jbxue.com 脚本学堂
echo file_size_format(123456789);
/**
 * 文件大小单位格式化
 * @param $bytes 文件实际大小,单位byte
 * @param $prec 转换后精确度,默认精确到小数点后两位
 * @return 转换后的大小+单位的字符串
 */
 function fsizeformat($bytes,$prec=2){
    $rank=0;
    $size=$bytes;
    $unit="b";
    while($size>1024){
        $size=$size/1024;
        $rank++;
    }
    $size=round($size,$prec);
    switch ($rank){
        case "1":
            $unit="kb";
            break;
        case "2":
            $unit="mb";
            break;
        case "3":
            $unit="gb";
            break;
        case "4":
            $unit="tb";
            break;
        default :

    }
    return $size." ".$unit;
 }
/**
 *  容量格式化
 * @param string   文件名(文件路径)
 * @return  如果文件存在返回格式化的字符串 如果错误返回错误信息  unknown file
 */ 
function sizeformat ($filename){ 
    //获取文件的大小 
    @ $filesize=filesize($filename); 
    //如果文件不存在返回错误信息 
    if(false==$filesize){ 
       return 'unknown file'; 
    }
    //格式化文件容量信息 
    if ($filesize >= 1073741824) $filesize = round($filesize / 1073741824 * 100) / 100 . ' gb'; 
    elseif ($filesize >= 1048576) $filesize = round($filesize / 1048576 * 100) / 100 . ' mb'; 
    elseif ($filesize >= 1024) $filesize = round($filesize / 1024 * 100) / 100 . ' kb'; 
    else $filesize = $filesize . ' bytes'; 
    return $filesize; 
}
//测试函数 
echo sizeformat('config.inc.php');
/**
  * 文件大小格式化
  * @param type $filesize
  */
private function sizecount($filesize)
{
    if ($filesize >= 1073741824) {
        $filesize = round($filesize / 1073741824 * 100) / 100 . ' gb';
    }

    else if ($filesize >= 1048576) {
        $filesize = round($filesize / 1048576 * 100) / 100 . ' mb';
    }

    else if ($filesize >= 1024) {
        $filesize = round($filesize / 1024 * 100) / 100 . ' kb';
    }
    return $filesize;
}

//该函数根据文件的字节数,判断应当选择的统计单位,一个文件用某一单位比如mb,那么该文件肯定小于1gb
//否则当然要用gb作为单位了,而且文件要大于kb,不然的话得用更小的单位统计。
//size()  统计文件大小
function size($byte)
{
    if($byte < 1024) {
      $unit="b";
    }
    else if($byte < 10240) {
      $byte=round_dp($byte/1024, 2);
      $unit="kb";
    }
    else if($byte < 102400) {
      $byte=round_dp($byte/1024, 2);
      $unit="kb";
    }
    else if($byte < 1048576) {
      $byte=round_dp($byte/1024, 2);
      $unit="kb";
    }
    else if ($byte < 10485760) {
      $byte=round_dp($byte/1048576, 2);
      $unit="mb";
    }
    else if ($byte < 104857600) {
      $byte=round_dp($byte/1048576,2);
      $unit="mb";
    }
    else if ($byte < 1073741824) {
      $byte=round_dp($byte/1048576, 2);
      $unit="mb";
    }
    else {
      $byte=round_dp($byte/1073741824, 2);
      $unit="gb";
    }

    $byte .= $unit;
    return $byte;
}
//辅助函数 round_up(),该函数用来取舍小数点位数的,四舍五入。
function round_dp($num , $dp)
{
  $sh = pow(10 , $dp);
  return (round($num*$sh)/$sh);
}
 

如此便可以统计任何一个文件的大小了。
首先,通过系统自带的filesize()函数获得文件的字节数,再用上面的这些函数换算成适当的单位即可。

您可能感兴趣的文章:
php数字格式化的例子(number_format函数应用)
php格式化文件大小的实现代码
数字格式化
【PHP学习】新手必备PHP常用函数大集合
php文件大小格式化函数大全
php日期格式化方法详解
php计算指定文件夹信息(文件夹数,文件数,文件夹大小)的代码
php如何获取上传文件大小
php字符串函数有哪些
为什么php不能做大型系统?

关键词: 文件大小格式化   
[关闭]
~ ~