用PHP计算实际文件大小
以字节为单位显示文件的大小很好,但是对大多数人来说意义不大,因此必须将大小转换为更具可读性的内容。以下函数将获取文件的字节数,并将其转换为更有意义的东西。它不仅将值转换为千字节,而且还返回最大的大小单位。因此,如果文件大于1073741824字节,则该函数将返回以GB为单位的值。
function readableFileSize($size){ $size = $size-1; if($size >= 1099511627776){ return number_format(($size / 1099511627776),2) . ' TB'; }elseif($size >= 1073741824){ return number_format(($size / 1073741824),2) . ' GB'; }elseif($size >= 1048576){ return number_format(($size / 1048576),2) . ' MB'; }elseif($size >= 1024){ return number_format(($size / 1024),2) . ' KB'; }elseif($size > 0){ return $size . ' b'; }elseif($size == 0 || $size == -1){ return '0 b'; } }
这是一些实际应用的例子。
echo readableFileSize(512); //511羽 echo readableFileSize(3793); //3.70KB echo readableFileSize(456765); //446.06KB echo readableFileSize(5000000); //4.77兆字节 echo readableFileSize(123456789); //117.74兆字节 echo readableFileSize(648564967358); //604.02GB
告诉用户可以上传的最大文件大小时,此功能非常有用。由于这可能是在脚本中设置为以字节为单位的变量,因此您不能仅将其输出给用户,因为用户必须自己解决这个问题。
更新
我最近发现了一种使用单个循环进行此操作的非常巧妙的方法。它比原始版本占用更多的处理器资源,但是可以通过将大小连续除以1024直到小于1024来进行工作。然后使用执行次数来计算单位。
function readableFileSize($size){ $units = array(' B', ' KB', ' MB', ' GB', ' TB'); for($i = 0; $size > 1024; $i++){ $size /= 1024; } return round($size, 2).$units[$i]; }