PHP 无法获取文件大小

Posted

技术标签:

【中文标题】PHP 无法获取文件大小【英文标题】:PHP Trouble getting Filesize 【发布时间】:2014-01-29 03:08:17 【问题描述】:

好的,所以我有一个位于主根目录的 php 文件,我正在尝试获取服务器上较低文件夹中文件的文件大小。

示例:http://website.com/myphpfile.php 尝试访问:http://website.com/movies/[包含所有内容]

我不断得到 0 或一些随机数,但我无法让它生成每个文件的大小。

 // Opens directory
$myDirectory = opendir("./movies"); 

// Gets each entry
while($entryName = readdir($myDirectory)) 
   $dirArray[] = $entryName;

我正在使用这个 sn-p:

function size_readable($size, $max = null, $system = 'si', $retstring = '%01.2f %s')

    // Pick units
    $systems['si']['prefix'] = array('B', 'K', 'MB', 'GB', 'TB', 'PB');
    $systems['si']['size']   = 1000;
    $systems['bi']['prefix'] = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB');
    $systems['bi']['size']   = 1024;
    $sys = isset($systems[$system]) ? $systems[$system] : $systems['si'];

    // Max unit to display
    $depth = count($sys['prefix']) - 1;
    if ($max && false !== $d = array_search($max, $sys['prefix'])) 
        $depth = $d;
    

    // Loop
    $i = 0;
    while ($size >= $sys['size'] && $i < $depth) 
        $size /= $sys['size'];
        $i++;
    

    return sprintf($retstring, $size, $sys['prefix'][$i]);

我的问题是如何调用这些文件?

我知道这是错误的,但应该是什么?

$thefilesize = size_readable(filesize($entryName));

有人可以编写/编辑此代码以帮助我了解发生了什么以及它在哪里/抓取了什么吗?

【问题讨论】:

你在哪里调用 size_readable? $file 的值是多少? 我在循环内调用 size_readable 并且 $file 为空。我不是故意把它放在那里的。让我编辑该部分。它应该是:$thefilesize = size_readable(filesize($entryName)); 【参考方案1】:

$entryName 只会引用文件名。如果要引用文件,还需要包含目录。

$thefilesize = size_readable(filesize($myDirectory .'/' . $entryName));

【讨论】:

好的,我让它工作了,但我不得不稍微修改一下。在你告诉我之后,我需要包含目录和它创建的文件,但现在它告诉我 filesize() [function.filesize]: stat failed for..... file any file over 2 gigs。查看我的代码,那里没有最大值,为什么会在这些文件上出错? 来自 php 文档:注意:由于 PHP 的整数类型是有符号的,并且许多平台使用 32 位整数,因此对于大于 2GB 的文件,某些文件系统函数可能会返回意外结果。 php.net/manual/en/function.filesize.php 有办法改变吗?或者我可以添加什么来忽略大于 2gb 的文件? 这里讨论过:***.com/questions/5501451/…

以上是关于PHP 无法获取文件大小的主要内容,如果未能解决你的问题,请参考以下文章

PHP 无法获取通过 Dropzone 上传的文件?

php导出csv文件大小怎么去除限制

php获取文件真实大小(支持远程文件)

如何获取远程存储图像的文件大小? (php)

PHP如何在上传期间获取tmp文件大小

如何使用PHP在ftp服务器上获取文件大小?