PHP文件大小格式化函数合集

2015-01-24信息快讯网

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

比如碰到一个很大的文件有49957289167B,大家一看这么一长串的数字后面单位是字节B,还是不知道这个文件的大小是一个什么概念,我们把它转换成GB为单位,就是46.53GB。用下面这些函数就可以完成这个工作:

//转换单位
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']; } 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中常用的字符串格式化函数总结
php格式化日期实例分析
php格式化时间戳显示友好的时间实现思路及代码
php时间戳格式化显示友好的时间函数分享
php实现的返回数据格式化类实例
phpword插件导出word文件时中文乱码问题处理方案
php中使用array_filter()函数过滤空数组的实现代码
php实现的太平洋时间和北京时间互转的自定义函数分享
zend framework框架中url大小写问题解决方法
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
PHP 正则表达式常用函数
php实现的DateDiff和DateAdd时间函数代码分享
php与flash as3 socket通信传送文件实现代码
php中将一段数据存到一个txt文件中并显示其内容
PHP中读取文件的8种方法和代码实例
php ci框架中加载css和js文件失败的原因及解决方法
php实现批量压缩图片文件大小的脚本
PHP遍历目录并返回统计目录大小
PHP生成自适应大小的缩略图类及使用方法分享
PHP英文字母大小写转换函数小结
CodeIgniter框架中_remap()使用方法2例
php GUID生成函数和类
php实现文件下载简单示例(代码实现文件下载)
php实现文件编码批量转换
php 创建以UNIX时间戳命名的文件夹(示例代码)
详解PHP中strlen和mb_strlen函数的区别
php 生成自动创建文件夹并上传文件的示例代码
php发送post请求函数分享
PHP empty函数报错解决办法
PHP常用函数和常见疑难问题解答
php无限遍历文件夹示例分享
php获取文件大小的方法
php根据操作系统转换文件名大小写的方法
php格式化日期和时间格式化示例分享
php比较两个绝对时间的大小
php查看请求头信息获取远程图片大小的方法分享
php自定义的格式化时间示例代码
限制ckeditor上传图片文件大小的方法
php number_format() 函数通过千位分组来格式化数字的实现代码
©2014-2024 dbsqp.com