Для очередного проекта на 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