PHP文件大小格式化函数合集
Jun 06, 2016 pm 08:24 PMphp中有一个系统自带的计算文件大小的函数,就是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 $unit="B";
}
else if($byte $byte=round_dp($byte/1024, 2);
$unit="KB";
}
else if($byte $byte=round_dp($byte/1024, 2);
$unit="KB";
}
else if($byte $byte=round_dp($byte/1024, 2);
$unit="KB";
}
else if ($byte $byte=round_dp($byte/1048576, 2);
$unit="MB";
}
else if ($byte $byte=round_dp($byte/1048576,2);
$unit="MB";
}
else if ($byte $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()函数获得文件的字节数,再用上面的这些函数换算成适当的单位就可以了
,
Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP
