Использование:
[[!FileSize? &input=`assets/files/myfile.zip`]]
— Будет автоматически выбрана единица измерения
[[*file_catalog:FileSize]]
— Вывод размера файла из TV-параметра
[[!FileSize? &input=`assets/files/myfile.zip` &unit=`b`]]
— Явно указываем единицу измерения
[[!FileSize? &input=`assets/files/myfile.zip` &get_ext=`1`]]
— Получить расширение файла, а не размер
[[*file_catalog:FileSize?&get_ext=`1`]]
— расширение файла из TV-параметра
{'!FileSize' | snippet : ['input' => 'assets/files/myfile.zip']}
— Fenom
Сниппет FileSize
if(!empty($get_ext)){
//Получить расширение файла в нижнер регистре
$ext = mb_strtolower(pathinfo($input, PATHINFO_EXTENSION));
return $ext;
}else{
//Получить размер файла
$units = array(
'gb' => array('size' => 1073741824, 'label' => 'ГБ'),
'mb' => array('size' => 1048576, 'label' => 'МБ'),
'kb' => array('size' => 1024, 'label' => 'КБ'),
'b' => array('size' => 0, 'label' => 'байт')
);
$input = MODX_BASE_PATH . $input;
$size = is_file($input) ? filesize($input) : 0;
$unit = (isset($unit) && isset($units[$unit])) ? $unit : false;
if ($size > 0) {
if ($unit === false) {
foreach ($units as $key => $properties) {
if ($size >= $properties['size']) {
$unit = $key;
break;
}
}
}
if ($unit != 'b'){
$size = $size / $units[$unit]['size'];
}
}
else {
if ($unit === false) $unit = 'b';
}
return round($size, 2) . ' ' . $units[$unit]['label'];
}
Комментарии (0)
Не писать ответ