В простейшем случае для того, чтобы узнать размер файла на PHP достаточно вызвать функцию filesize()
, например вот так я узнаю сколько «весит» дистрибутив MODx Evolution, лежащий в каталоге /opt/lampp/htdocs:
<?php echo filesize('/opt/lampp/htdocs/modx-1.0.8.zip') . ' Б'; ?>
Однако давайте попробуем автоматически конвертировать в зависимости от размера файла байты в килобайты, мегабайты, гигабайты, терабайты, петабайты, эксабайты, зеттабайты и йоттабайты. Далее представлена одна из возможных реализаций решения данной задачки:
<?php function get_human_filesize($size) { $kilobyte = 1024; if ($size < $kilobyte) { return "$size Б"; } else { $size = $size / $kilobyte; // - ковертируем байты в килобайты. $units = array( '@size Кб', '@size МБ', '@size ГБ', '@size ТБ', '@size ПБ', '@size ЭБ', '@size ЗБ', '@size ЙБ', ); foreach ($units as $unit) { if (round($size, 2) >= $kilobyte) $size = $size / $kilobyte; else break; } return str_replace('@size', round($size, 2), $unit); } } // Пример использования функции get_human_filesize(): $size = 104857600; // - в байтах. print get_human_filesize($size); ?>
Ответ будет равен 100 МБ, что и требовалось выполнить.
P.S. Программный код с некоторыми изменениями взаимствован из API CMS Drupal 7.
Свежие комментарии