Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / PHP

A simple class in PHP to calculate the size of file

5.00/5 (2 votes)
5 Feb 2013CPOL 12.6K  
A simple class in PHP to calculate the weight of file

Introduction 

It's a very useful source written in PHP to calculate file size. Two ways have been implemented here:

  1. by Unit Type (e.g.: B, KB, MB, ....)
  2. by precision (e.g.: digits after decimal)

Source Files

  1. class.file_management.php - the main class file
  2. index.php - homepage
  3. test.test - file used as an example only  

Using the code

Class declaration is as follows:

PHP
include("class.file_management.php");
$objZF    =    new FileManagement;

Now call the function as follows:

PHP
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.

PHP
echo $objZF->file_size_auto("test.test", 2);

The complete class definition is listed here:

PHP
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

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)