Как на PHP узнать размер файла

В простейшем случае для того, чтобы узнать размер файла на 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.

Опубликовано 16-07-2013 в 07:48
PHP


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Свежие комментарии

PORNOSEKSXXX

  • Иван: к записи Привет всем, доброго времени суток! Я излазил весь »
  • Александер: к записи Потом пригляделся, вроде Вы не это имели в виду и »
  • Александер: к записи У Вас не русифицируется, потому что не везде включ »
  • Администратор: к записи Это надо использовать функции вашей CMS. »
  • Alex: к записи Ребят, а подскажите пожалуйста, как реализовать с »
  • Владимир: к записи А как теперь будет выглядеть ссылка для перехода н »
  • Администратор: к записи Не знаю. »

Статистика спама

Akismet заблокировал 33 450 спамеров

Последние твиты

Твиты пользователя @red_book_cms