站长资讯网
最全最丰富的资讯网站

PHP filesize() 函数

filesize

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

语法

filesize(filename)

参数

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

返回值

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

filesize 示例

示例一

<?php  // 输出类似:somefile.txt: 1024 bytes  $filename = 'somefile.txt'; echo $filename . ': ' . filesize($filename) . ' bytes';  ?>

示例二

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

示例三

<?php /** * Converts bytes into human readable file size. * * @param string $bytes * @return string human readable file size (2,87 Мб) * @author Mogilev Arseny */ function FileSizeConvert($bytes) {     $bytes = floatval($bytes);         $arBytes = array(             0 => array(                 "UNIT" => "TB",                 "VALUE" => pow(1024, 4)             ),             1 => array(                 "UNIT" => "GB",                 "VALUE" => pow(1024, 3)             ),             2 => array(                 "UNIT" => "MB",                 "VALUE" => pow(1024, 2)             ),             3 => array(                 "UNIT" => "KB",                 "VALUE" => 1024             ),             4 => array(                 "UNIT" => "B",                 "VALUE" => 1             ),         );      foreach($arBytes as $arItem)     {         if($bytes >= $arItem["VALUE"])         {             $result = $bytes / $arItem["VALUE"];             $result = str_replace(".", "," , strval(round($result, 2)))." ".$arItem["UNIT"];             break;         }     }     return $result; }  ?>

示例四

<?php /** * Return file size (even for file > 2 Gb) * For file size over PHP_INT_MAX (2 147 483 647), PHP filesize function loops from -PHP_INT_MAX to PHP_INT_MAX. * * @param string $path Path of the file * @return mixed File size or false if error */ function realFileSize($path) {     if (!file_exists($path))         return false;      $size = filesize($path);         if (!($file = fopen($path, 'rb')))         return false;         if ($size >= 0)     {//Check if it really is a small file (< 2 GB)         if (fseek($file, 0, SEEK_END) === 0)         {//It really is a small file             fclose($file);             return $size;         }     }         //Quickly jump the first 2 GB with fseek. After that fseek is not working on 32 bit php (it uses int internally)     $size = PHP_INT_MAX - 1;     if (fseek($file, PHP_INT_MAX - 1) !== 0)     {         fclose($file);         return false;     }         $length = 1024 * 1024;     while (!feof($file))     {//Read the file until end         $read = fread($file, $length);         $size = bcadd($size, $length);     }     $size = bcsub($size, $length);     $size = bcadd($size, strlen($read));         fclose($file);     return $size; }

推荐教程:《PHP》

赞(0)
分享到: 更多 (0)