Очень часто возникает необходимость рядом со ссылкой на файл вывести его размер в человекопонятном формате с указанием приставки по системе СИ
Собственно, сама функция
/* * Форматируем строку с размеров файла */ function formatSize($size) { $units = array(' Б', ' Кб', ' Мб', ' Гб', ' Тб'); for ($i = 0; $size >= 1024 && $i < 4; $i++) { $size /= 1024; } return round($size, 2).$units[$i]; }
Использовать можно примерно так:
$filename = '/path/to/file'; if (is_file($filename)) { printf( "Размер вашего файла %s: %s", basename($filename), formatSize(filesize($filename)) ); }
Другой вариант
Спасибо пользователю Ostin за наводку.
function formatSize($size) { $filesizename = array( " Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB" ); return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0 ' . $filesizename[0]; }
Ссылки
Источник: https://www.kobzarev.com/programming/formatting-a-string-with-the-file-size/