Как определить размер файла на PHP

Для того чтобы определить размер файла можно воспользоваться стандартной функцией PHP. Но как отобразить его размер не в байтах а в нормальном формате?

PHP — узнать размер файла и отобразить в килобайтах, мегабайтах или гигабайтах

Задача: получить вывод файла в виде 12.4 Мб. Для решения будем использовать несколько встроенных функций. Изначально размер файла будет отображен в байтах. Например, такой код:

<?
echo $filesize = filesize($filePath);

выведет размер именно в байтах (12314), что крайне неудобно. Одна из функций filesize() принимает своим аргументом путь к файлу относительно корня с самого сервера (может понадобиться $_SERVER[‘DOCUMENT_ROOT’]) — это важный момент, поскольку указав не верный путь, ничего не произойдет.

Для того чтобы написать функцию, нужно понимать простейшую математику:
в 1 килобайте (Кб) — 1024 байт
в 1 мегабайте (Мб) — 1024 килобайт
в 1 гигайбайте (Гб) — 1024 мегабайт

Исходя из этого, пишем небольшую функцию для читаемого отображения байт в нужный формат:

<?
// аргумент функции это путь к файлу
function getFilesize($file)
{
	// ошибка
	if(!file_exists($file)) return "Файл не найден";


	$filesize = filesize($file);
	// Если размер больше 1 Кб
	if($filesize > 1024)
	{
		$filesize = ($filesize/1024);
		// Если размер файла больше Килобайта
		// то лучше отобразить его в Мегабайтах. Пересчитываем в Мб
		if($filesize > 1024)
		{
			$filesize = ($filesize/1024);
			// А уж если файл больше 1 Мегабайта, то проверяем
			// Не больше ли он 1 Гигабайта
			if($filesize > 1024)
			{
				$filesize = ($filesize/1024);
				$filesize = round($filesize, 1);
				return $filesize." ГБ";
			}
			else
			{
				$filesize = round($filesize, 1);
				return $filesize." MБ";
			}
		}
		else
		{
			$filesize = round($filesize, 1);
			return $filesize." Кб";
		}
	}
	else
	{
		$filesize = round($filesize, 1);
		return $filesize." байт";
	}
}
?>

Используем функцию:

echo $size = getFilesize($_SERVER['DOCUMENT_ROOT'].'/images/bg.jpg');

Данный код переконвертирует число в нужную величину, исходя из размера файла. Основная проблема, которая может возникнуть, это правильный путь к файлу, всё остальное должно отработать как часы 🙂 .

Также, в примере используется функция округления round(), при помощи которой читаемость становится еще более понятней;

Если вам необходимо провести доработки на вашем проекте, обращайтесь ко мне за помощью ;)

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
- Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
- Разработка функционала с нуля и доработка кода на уже созданных проектах;
- Адаптивная вёрстка макетов и натяжка на Битрикс;
- Парсинг файлов и выгрузка на сайт (форматы - CSV, XML, XLSX, JSON)
- Интеграции со сторонними сервисами по API;
- Многоязычные версии и многое другое.

Если у вас остались вопросы, свяжитесь со мной любым удобным для вас способом или оставьте комментарий внизу.
E-mail: dmitriyribka@gmail.com
Skype: cinemacreaterus

Один комментарий

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

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