Introduction
It's a very useful source written in PHP to calculate file size. Two ways have been implemented here:
- by Unit Type (e.g.: B, KB, MB, ....)
- by precision (e.g.: digits after decimal)
Source Files
- class.file_management.php - the main class file
- index.php - homepage
- test.test - file used as an example only
Using the code
Class declaration is as follows:
include("class.file_management.php");
$objZF = new FileManagement;
Now call the function as follows:
echo $objZF->file_size_option("test.test", "KB");
In the above way, you can get your result in your desired unit, bytes, kilobytes,
megabytes, whatever you want. And the below example is of an auto-fixed unit system,
the function will decide the return type of unit. But here you can set the precision, i.e.,
the number of digits after the decimal.
echo $objZF->file_size_auto("test.test", 2);
The complete class definition is listed here:
class FileManagement
{
public $units = array('B', 'KB', 'MB', 'GB', 'TB');
function file_size_auto($fileName, $precision) {
$bytes = filesize($fileName);
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($this->units) - 1);
$bytes /= pow(1024, $pow);
$retValue = round($bytes, $precision) . ' ' . $this->units[$pow];
return $retValue;
}
function file_size_option($fileName, $unitType) {
switch($unitType) {
case $this->units[0]:
$fileSize = number_format((filesize(trim($fileName))), 1) ;
break;
case $this->units[1]:
$fileSize = number_format((filesize(trim($fileName))/1024), 1) ;
break;
case $this->units[2]:
$fileSize = number_format((filesize(trim($fileName))/1024/1024), 1) ;
break;
case $this->units[3]:
$fileSize = number_format((filesize(trim($fileName))/1024/1024/1024), 1) ;
break;
case $this->units[4]:
$fileSize = number_format((filesize(trim($fileName))/1024/1024/1024/1024), 1) ;
break;
}
$retValue = $fileSize. ' ' .$unitType;
return $retValue;
}
}
History
Initial post: 13th January, 2013