用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; }