• 技术文章 >后端开发 >php教程

    PHP filesize() 函数

    钟老师钟老师2020-08-01 15:23:31原创298
    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

    以上就是PHP filesize() 函数的详细内容,更多请关注php中文网其它相关文章!

    本文原创发布php中文网,转载请注明出处,感谢您的尊重!
    专题推荐:php filesize
    上一篇:一文读懂php设计模式之代理模式 下一篇:详解PHP网页缓存技术优点及代码实例
    第12期线上周末培训班

    相关文章推荐

    • php怎么判断类的方法是否存在• php如何删除字符串中的中文• php如何将整数转为字符串• php如何设置session有效期• php如何删除数组索引

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网