Специалисты, подскажите пожалуйста в рещении проблемы.
Задача:
- необходимо загружать на сервер файлы только определенного типа;
- размер загружаемых файлов не должен превышать 20 Мб;
- если файл меньше 20 Мб и соответствует разрешенному типу формируется письмо с текстом и отправляется на почту
- если файл больше 20 Мб или не соответствует разрешенному типу формируется письмо с текстом об ошибке и отправляется на почту
- если файл больше 20 Мб, тогда не надо ждать пока он загрузится на сервер (этого пока нет, пробывал с полем hidden, но что-то не получается)
В принципе все реализовано, вот только есть одно НО!
Если файл больше 20 Мб, тогда сервер ждет его полной загрузки, и при формировании письма, он отправляет на почту абсолютно пустое письмо без текста и темы.
Подскажите пожалуйста, как реализовать проверку размера файла, что-бы не ждать его полной загрузки на сервер, и объяснить, или показать на мою ошибку, почему если файл больше 20 Мб такое происходит.
upload_max_filesize => 32M => 32M
Текст письма содержится в переменной $message.
Заранее благодарен!
--------------------------------------------------------
Есть html-форма:
<form id="form1" action="send_email.php" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="button" value="Загрузить" onClick="tr();">
</form>
--------------------------------------------------------
Серверная часть:
// Проверка файла на размер
if($_FILES["filename"]["size"] > 1024*20*1024)
{
echo ("Размер файла превышает 20 мегабайт");
$message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось, так как он превышает допустимый размер - 20 МБ.";
mail($to, $subject, $message, $headers);
echo "<meta http-equiv='refresh'; content='5; url=/index.php?option=com_content&view=article&id=198&Itemid=232'>";
// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
// Если файл загружен успешно, перемещаем его из временной директории в конечную
if (copy($_FILES['filename']['tmp_name'], $uploadfile))
{
echo "<p>Файл успешно загружен на сервер</p>";
$message .= "\r\n\r\n\r\nФайл успешно загружен на сервер.";
mail($to, $subject, $message, $headers);
echo "<meta http-equiv='refresh'; content='5; url=/index.php'> ";
}
else
{
echo("<p>Ошибка! Не удалось загрузить файл на сервер, попробуйте повторить попытку позже!</p>");
$message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось.";
mail($to, $subject, $message, $headers);
echo "<meta http-equiv='refresh'; content='5; url=/index.php?option=com_content&view=article&id=198&Itemid=232'>";
}
}
// Проверка на несоответсвие типа
elseif ($type !== "jpg")
{
echo ("Файл не соответствует разрешенному формату");
$message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось, так как он не соответствует разрешенному формату.";
mail($to, $subject, $message, $headers);
echo "<meta http-equiv='refresh'; content='5; url=/index.php?option=com_content&view=article&id=198&Itemid=232'> ";
}
}
else
{
$asd = mail($to, $subject, $message, $headers);
}