PHP格式化显示文件大小函数

时间:2021-09-01 21:29:56

用filesize() 函数可以返回文件的大小,可是返回值是以字节(B)为单位的,看起来不方便。怎么让它根据文件的大小自动以KB、MB、GB为单位显示呢,用下面这个函数就可以实现了。

<?php
/**
* 格式化文件大小显示
*
* @param int $size
* @return string
*/
function format_size($size)
{
$prec = 3;
$size = round(abs($size));
$units = array(
0 => " B ",
1 => " KB",
2 => " MB",
3 => " GB",
4 => " TB"
);
if ($size == 0)
{
return str_repeat(" ", $prec) . "0$units[0]";
}
$unit = min(4, floor(log($size) / log(2) / 10));
$size = $size * pow(2, -10 * $unit);
$digi = $prec - 1 - floor(log($size) / log(10));
$size = round($size * pow(10, $digi)) * pow(10, -$digi); return $size . $units[$unit];
}
?>
/**
* 格式化容量大小
*/
function format_size($size)
{
if ($size >= 1073741824)
{
$size = round($size / 1073741824 * 100) / 100 . ' GB';
}
elseif ($size >= 1048576)
{
$size = round($size / 1048576 * 100) / 100 . ' MB';
}
elseif ($size >= 1024)
{
$size = round($size / 1024 * 100) / 100 . ' KB';
}
else
{
$size = $size . ' Bytes';
} return $size;
}