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 无法获取文件大小的主要内容,如果未能解决你的问题,请参考以下文章