我经历了很多Q& A但没有找到我的解决方案。
我知道有一个功能GLOB,但我没有使用它,因为我看到它的灵活性不大。
我在做什么:
我正在尝试列出文件夹中的文件并显示其大小。
问题
它给出了一个统计错误,但显示了最后一个文件的大小。
PHP
<?php
$thelist = '';
$count = 0;
$filelist = array();
if ($handle = opendir('./storage')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$filelist[] = $file;
/*$thelist .= '<li><a href="'.$file.'">'.$file.'</a></li>';*/
$count = $count+1;
}
}
closedir($handle);
}
for($index=0; $index<$count; $index++){
$name = $filelist[$index];
$size = number_format(filesize($filelist[$index]));
$thelist .= '<li><a href="'.$name.'">'.$name.'</a>'.$size.'</li>';
}
?>
HTML
<div id="list">
<?php
if($count<1){
echo '<div id="empty_storage"><img src="icon.png"><br>Its lonely here!</div>';
}
else{
?>
<ul>
<?php echo $thelist; ?>
</ul>
<?php
}
?>
</div>
注意
我在WAMP上尝试这个。
更新
我的转储看起来像这样
array (size=3)
0 => string 'icon (2).png' (length=12)
1 => string 'icon.png' (length=8)
2 => string 'new.png' (length=7)
答案 0 :(得分:2)
在我的情况下,您的错误重现为:
PHP警告:filesize():第18行/home/bnowakowski/storage/test.php中testfile的stat失败 PHP堆栈跟踪: PHP 1. {main}()/ home /bnowakowski/storage/test.php:0 PHP 2. filesize()/home/bnowakowski/storage/test.php:18 PHP警告:filesize():第18行/home/bnowakowski/storage/test.php中testdir的stat失败 PHP堆栈跟踪: PHP 1. {main}()/ home /bnowakowski/storage/test.php:0 PHP 2. filesize()/home/bnowakowski/storage/test.php:18
结果:
<li><a href="testfile">testfile</a>0</li>
<li><a href="testdir">testdir</a>0</li>
我必须做的就是改变它所要求的文件路径:
$name = $filelist[$index];
$size = number_format(filesize('./storage/' . $name));
使其在正确的位置询问文件的大小。它甚至可以用于符号链接或目录。