您当前的位置: 首页 > 网站编程 > PHP教程 > PHP文件大小格式化函数合集

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

作者:不详 来源:网络 发布时间: 2014-08-06 23:26 点击:
php中有一个系统自带的计算文件大小的函数,就是filesize(),但是这个函数是以字节为单位的,在一些情况下,我们需要很直观的了解一个文件大小,就不仅仅需要字节B这个单位了,还需要KB,MB,GB,甚至更大TB,PB,所以我们需要自己写一些函数来格式化filesize()的输出

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

  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文件大小格式化函数合集"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4