PHP размер файла MB / KB преобразование - PullRequest
117 голосов
/ 31 марта 2011

Как я могу преобразовать выходные данные функции PHP filesize() в хороший формат с MegaBytes, KiloBytes и т. Д.

как:

  • , если размер меньше 1 МБ, показать размер в КБ
  • , если это между 1 МБ - 1 ГБ показать в МБ
  • если больше - в ГБ

Ответы [ 12 ]

0 голосов
/ 29 мая 2019

Вот простая функция для преобразования байтов в КБ, МБ, ГБ, ТБ:

# Size in Bytes
$size = 14903511;
# Call this function to convert bytes to KB/MB/GB/TB
echo convertToReadableSize($size);
# Output => 14.2 MB

function convertToReadableSize($size){
  $base = log($size) / log(1024);
  $suffix = array("", "KB", "MB", "GB", "TB");
  $f_base = floor($base);
  return round(pow(1024, $base - floor($base)), 1) . $suffix[$f_base];
}
0 голосов
/ 17 октября 2018

Во всех ответах на вопрос используется 1 килобайт = 1024 байта, что неверно!( 1 кибибайт = 1024 байта )

, поскольку вопрос требует преобразования размеров файлов, следует использовать это 1 килобайт = 1000 байтов (см. https://wiki.ubuntu.com/UnitsPolicy)

function format_bytes($bytes, $precision = 2) {
    $units = array('B', 'KB', 'MB', 'GB');

    $bytes = max($bytes, 0);
    $pow = floor(($bytes ? log($bytes) : 0) / log(1000));
    $pow = min($pow, count($units) - 1);

    $bytes /= pow(1000, $pow);

    return round($bytes, $precision) . ' ' . $units[$pow];
}
...