Как проверить размер загружаемого файла с помощью PHP?
Здравствуйте! У меня возникла проблема при проверке размера загружаемого файла с использованием PHP. Я создаю функцию, которая должна проверять размер файла, который пользователь загружает на мой сайт. Вот мой код:
function checkFileSize($file)
{
$maxSize = 5242880; // Максимальный размер файла - 5 МБ (в байтах)
$fileSize = filesize($file);
if ($fileSize > $maxSize) {
return false;
}
return true;
}
$uploadedFile = $_FILES['file']['tmp_name'];
if (!checkFileSize($uploadedFile)) {
echo "Размер файла превышает допустимый лимит.";
}
Проблема заключается в том, что функция всегда возвращает false, даже если размер файла не превышает заданный максимальный размер. Я не могу понять, в чем ошибка. Может быть, я неправильно использую функцию filesize() или проблема в настройках сервера?
Буду очень благодарен за помощь и подсказки в решении данной проблемы!
Ответы:
Проблема с вашим кодом возникает из-за неправильного использования функции filesize(). Функция filesize() возвращает размер файла в байтах, а не путь к файлу, как вы ее используете.
Вместо использования $_FILES['file']['tmp_name'] в качестве аргумента для функции filesize(), вам нужно использовать $_FILES['file']['size']. Это поле массива $_FILES содержит размер загружаемого файла в байтах.
Исправленный код будет выглядеть так:
function checkFileSize($fileSize)
{
$maxSize = 5242880; // Максимальный размер файла - 5 МБ (в байтах)
if ($fileSize > $maxSize) {
return false;
}
return true;
}
$uploadedFileSize = $_FILES['file']['size'];
if (!checkFileSize($uploadedFileSize)) {
echo "Размер файла превышает допустимый лимит.";
}
Теперь функция checkFileSize() принимает размер файла в качестве аргумента, а не путь к файлу. Проверяется, превышает ли размер файла заданный максимальный размер, и соответствующее сообщение выводится, если превышение размера обнаружено.
Надеюсь, это поможет вам в решении проблемы. Если у вас остались дополнительные вопросы, не стесняйтесь задавать!