Для очередного проекта на MODx мне понадобилось вывести список файлов из указанной директории с указанием размера файла и даты создания файлов.
<?php
function formatBytes($b,$p = null) {
 /**
 *
 * @author Martin Sweeny
 * @version 2010.0617
 *
 * returns formatted number of bytes.
 * two parameters: the bytes and the precision (optional).
 * if no precision is set, function will determine clean
 * result automatically.
 *
 **/
 $units = array(“B”,”kB”,”MB”,”GB”,”TB”,”PB”,”EB”,”ZB”,”YB”);
 $c=0;
 if(!$p && $p !== 0) {
 foreach($units as $k => $u) {
 if(($b / pow(1024,$k)) >= 1) {
 $r[“bytes”] = $b / pow(1024,$k);
 $r[“units”] = $u;
 $c++;
 }
 }
 return number_format($r[“bytes”],2) . ” ” . $r[“units”];
 } else {
 return number_format($b / pow(1024,$p)) . ” ” . $units[$p];
 }
}
//    @author Max Rogalsky
// директория с файлами
// знаю что некрасиво в конце со слешем,
// но пришлось делать буквально на коленке
 $downloads = ‘files/’;
 $i = 0;
// открываем директорию
 $handle = opendir ($downloads);
 // читаем содержимое каталога
 while($file = readdir($handle))
 {
 if ($file != ‘.’ && $file != ‘..’)
 {
 $files[$i] = $file;    //формируем массив файлов
 $i++;
 }
 }
 // сортируем в алфавитном порядке
 sort ($files);
 for ($f = 0; $f<sizeof($files); $f++)
 {
 // выводим ссылку на файл
 echo “<a href='”.$downloads.$files[$f].”‘>”.$files[$f].”</a>\n”;
 // получаем размер файла
 $f_size = filesize($downloads.$files[$f]);
 // получаем дату создания файла
 $f_time = date(“d-m-Y”, filemtime($downloads.$files[$f]));
 // выводим с помощью функции formatBytes размер файла и дату
 echo “size:”.formatBytes($f_size).” date:”.$f_time;
 echo “<br>”;
 }
?>
				 Переглядів: 6