2016-06-09 5 views
1

Я прошел через много Q & A, но не нашел свое решение.Список файлов из папки дает ошибку stat из-за filesize

Я знаю, что есть функция 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.

UPDATE

Моя свалка выглядит следующим образом

array (size=3) 
    0 => string 'icon (2).png' (length=12) 
    1 => string 'icon.png' (length=8) 
    2 => string 'new.png' (length=7) 
+0

Вы уверены, что не сокрушаетесь при попытке создать файл. – yergo

+0

Я тебя не понял? – Ayan

+0

Можете ли вы предоставить строку, где возникает ошибка? – GONG

ответ

2

В моем случае ваша ошибка размножается как:

PHP Предупреждение: размер_файл(): стат Сбой TestFile в/home/bnowakowski/storage/test.php on line 18 PHP Stack trace: PHP 1. {main}() /home/bnowakowski/storage/test.php:0 PHP 2. filesize() /home/bnowakowski/storage/test.php:18 PHP Предупреждение: filesize(): stat не удалось выполнить testdir в /home/bnowakowski/storage/test.php в строке 18 PHP Stack trace: РНР 1. {} Основной() /home/bnowakowski/storage/test.php:0 РНР 2. размер файла() /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)); 

, чтобы он запрашивал размер файла в нужном месте. Он работает даже с символическими ссылками или каталогами.

+0

Это сработало. Большое спасибо. Еще одна вещь, добавив измененное время, повторить то же самое? и как отсортировать список файлов как самый новый? – Ayan

+0

отметьте это как «решение» – KikiTheOne

+0

На вашем месте я бы предпочел использовать [DirectoryIterator] (http://stackoverflow.com/questions/4202175/php-script-to-loop-through-all-of-the-files- in-a-directory) и собирать дату фида в качестве ключевого значения в массиве fileinfos. Затем 'ksort' это и подготовить выход как завершающий штрих. – yergo

Смежные вопросы