当前位置:首页 > PHP教程 > php函数 > 列表

PHP filesize() 函数

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-20 14:46:39 浏览: 评论:0 

filesize

作用:函数返回指定文件的大小

语法:

filesize(filename)

参数:

filename:必需。规定要检查的文件。

返回值:

返回文件大小的字节数,如果出错返回 FALSE 并生成一条 E_WARNING 级的错误。

filesize 示例

示例一

  1. <?php 
  2.  
  3.  
  4.  
  5. // 输出类似:somefile.txt: 1024 bytes 
  6.  
  7.  
  8.  
  9. $filename = 'somefile.txt'
  10.  
  11. echo $filename . ': ' . filesize($filename) . ' bytes'
  12.  
  13.  
  14.  
  15. ?> 

示例二

  1. <?php 
  2.  
  3. function human_filesize($bytes$decimals = 2) { 
  4.  
  5.   $sz = 'BKMGTP'
  6.  
  7.   $factor = floor((strlen($bytes) - 1) / 3); 
  8.  
  9.   return sprintf("%.{$decimals}f"$bytes / pow(1024, $factor)) . @$sz[$factor]; 
  10.  
  11.  
  12. ?> 

示例三

  1. <?php 
  2.  
  3. /** 
  4.  
  5. * Converts bytes into human readable file size. 
  6.  
  7. * 
  8.  
  9. * @param string $bytes 
  10.  
  11. * @return string human readable file size (2,87 Мб) 
  12.  
  13. * @author Mogilev Arseny 
  14.  
  15. */ 
  16.  
  17. function FileSizeConvert($bytes
  18.  
  19.  
  20.     $bytes = floatval($bytes); 
  21.  
  22.         $arBytes = array
  23.  
  24.             0 => array
  25.  
  26.                 "UNIT" => "TB"
  27.  
  28.                 "VALUE" => pow(1024, 4) 
  29.  
  30.             ), 
  31.  
  32.             1 => array
  33.  
  34.                 "UNIT" => "GB"
  35.  
  36.                 "VALUE" => pow(1024, 3) 
  37.  
  38.             ), 
  39.  
  40.             2 => array
  41.  
  42.                 "UNIT" => "MB"
  43.  
  44.                 "VALUE" => pow(1024, 2) 
  45.  
  46.             ), 
  47.  
  48.             3 => array
  49.  
  50.                 "UNIT" => "KB"
  51.  
  52.                 "VALUE" => 1024 
  53.  
  54.             ), 
  55.  
  56.             4 => array
  57.  
  58.                 "UNIT" => "B"
  59.  
  60.                 "VALUE" => 1 
  61.  
  62.             ), 
  63.  
  64.         ); 
  65.  
  66.  
  67.  
  68.     foreach($arBytes as $arItem
  69.  
  70.     { 
  71.  
  72.         if($bytes >= $arItem["VALUE"]) 
  73.  
  74.         { 
  75.  
  76.             $result = $bytes / $arItem["VALUE"]; 
  77.  
  78.             $result = str_replace(".""," , strval(round($result, 2)))." ".$arItem["UNIT"]; 
  79.  
  80.             break
  81.  
  82.         } 
  83.  
  84.     } 
  85.  
  86.     return $result
  87.  
  88.  
  89.  
  90.  
  91. ?> 

示例四

  1. <?php 
  2.  
  3. /** 
  4.  
  5. * Return file size (even for file > 2 Gb) 
  6.  
  7. * For file size over PHP_INT_MAX (2 147 483 647), PHP filesize function loops from -PHP_INT_MAX to PHP_INT_MAX. 
  8.  
  9. * 
  10.  
  11. * @param string $path Path of the file 
  12.  
  13. * @return mixed File size or false if error 
  14.  
  15. */ 
  16.  
  17. function realFileSize($path
  18.  
  19.  
  20.     if (!file_exists($path)) 
  21.  
  22.         return false; 
  23.  
  24.  
  25.  
  26.     $size = filesize($path); 
  27.  
  28.      
  29.  
  30.     if (!($file = fopen($path'rb'))) 
  31.  
  32.         return false; 
  33.  
  34.      
  35.  
  36.     if ($size >= 0) 
  37.  
  38.     {//Check if it really is a small file (< 2 GB) 
  39.  
  40.         if (fseek($file, 0, SEEK_END) === 0) 
  41.  
  42.         {//It really is a small file 
  43.  
  44.             fclose($file); 
  45.  
  46.             return $size
  47.  
  48.         } 
  49.  
  50.     } 
  51.  
  52.      
  53.  
  54.     //Quickly jump the first 2 GB with fseek. After that fseek is not working on 32 bit php (it uses int internally) 
  55.  
  56.     $size = PHP_INT_MAX - 1; 
  57.  
  58.     if (fseek($file, PHP_INT_MAX - 1) !== 0) 
  59.  
  60.     { 
  61.  
  62.         fclose($file); 
  63.  
  64.         return false; 
  65.  
  66.     } 
  67.  
  68.      
  69.  
  70.     $length = 1024 * 1024; 
  71.  
  72.     while (!feof($file)) 
  73.  
  74.     {//Read the file until end 
  75.  
  76.         $read = fread($file$length); 
  77.  
  78.         $size = bcadd($size$length); 
  79.  
  80.     } 
  81.  
  82.     $size = bcsub($size$length); 
  83.  
  84.     $size = bcadd($sizestrlen($read)); 
  85.  
  86.      
  87.  
  88.     fclose($file); 
  89.  
  90.     return $size
  91.  
  92. }

Tags: filesize

分享到:

相关文章