Определить размер файла, используя код php очень просто и сейчас Вы узнаете как...

В некоторых ситуациях необходимо узнать размер файла PHP, который расположен либо на том же сервере, где лежит скрипт, либо на удаленном сервере. Такая задача может быть реализована несколькими способами. Однако, наиболее короткий, удобный и быстрый является проверка файла, посредством использования функции stream_get_meta_data, которая возвращает определенные данные, используя fsockopen(), fopen() или pfsockopen(). Версия PHP с которой доступна данная функция — PHP 4 >= 4.3.0, PHP 5.

Итак, ситуация: файл находится на сервере http://test.org/file.zip Для того, чтобы определить его размер сразу, без использования базы данных, мы используем следующий код, который также приводит размер файла к удобному формату: ГБ, МБ, КБ, Б.

<?php
//создадим функцию, которая будет определять размер файла
function fsize($path)
{
$fp = fopen($path,"r");
$inf = stream_get_meta_data($fp);
fclose($fp);
foreach($inf["wrapper_data"] as $v) {
if (stristr($v, "content-length")) {
$v = explode(":", $v);
return trim($v[1]);
}
}
}
//эта функция будет указывать ссылку на файл
//сюда также можно подставить значение переменной, например:
//$link_to_file = [значение из БД];
//$filesize = link_to_file;
$filesize = "https://f.inverser.pro/files/scripts/google!.txt";
//функция, которой присваивается размер в байтах
$inbytes = fsize($filesize);

//приводим размер к удобному формату, например 115,4 МБ
//если файл имеет нулевое значение, то есть не найден, то выводим информацию об этом
if ($inbytes == 0)
{echo $inbytes = "Файл не найден!";}
else
{
// Если размер переданного в функцию файла больше 1кб
if($inbytes >= 1024)
{
$inbytes = ($inbytes/1024);
// если размер файла больше одного килобайта
// пересчитываем в мегабайтах
if($inbytes > 1024)
{
$inbytes = ($inbytes/1024);
// если размер файла больше одного мегабайта
// пересчитываем в гигабайтах
if($inbytes > 1024)
{
$inbytes = ($inbytes/1024);
$inbytes = round($inbytes, 1);
echo $inbytes." ГБ";

}
else
{
$inbytes = round($inbytes, 1);
echo $inbytes." MБ";
}

}
else
{
$inbytes = round($inbytes, 1);
echo $inbytes." КБ";
}

}
else
{
$inbytes = round($inbytes, 1);
echo $inbytes." Б";
}
}
?>

На этом все. Возможно, Вы сможете усовершенствовать этот код или спросить меня о чем-либо в комментариях.

PHP размер файла