Подскажите пожалуйста, как в 3 случае, узнать размер файла, или хотя бы то, что файл больше upload_max_filesize, если загружаемый файл превышает upload_max_filesize? Заранее благодарен! 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> PHP: if(isset($_FILES["filename"]["tmp_name"]) && is_uploaded_file($_FILES["filename"]["tmp_name"])) { if ($_FILES["filename"]["size"] < 1024*20*1024) { if($type == "jpg") { if (copy($_FILES['filename']['tmp_name'], $uploadfile)) { echo "<p>Файл успешно загружен на сервер</p>"; $message .= "Файл успешно загружен на сервер."; mail($to, $subject, $message, $headers); } else { echo("<p>Ошибка! Не удалось загрузить файл на сервер, попробуйте повторить попытку позже!</p>"); $message .= "Файл загрузить на сервер не удалось."; mail($to, $subject, $message, $headers); } } else { echo ("Файл не соответствует разрешенному формату"); $message .= "Файл загрузить на сервер не удалось, так как он не соответствует разрешенному формату."; mail($to, $subject, $message, $headers); } } else { echo ("Размер файла превышает 20 мегабайт"); $message .= "Файл загрузить на сервер не удалось, так как он превышает допустимый размер - 20 МБ."; mail($to, $subject, $message, $headers); } } else { $message .= "Файл не был выбран."; mail($to, $subject, $message, $headers); } 1) до 2 Мб - работает правильно post_max_size = 2M 2) до 8 Мб - загружает файлы, но работает не правильно upload_max_filesize = 8M 3) больше 8 Мб - не работает вообще ------------------------------------------------ 1) Если я пробую загрузить файлы < 2 Мб, тогда все работает корректно (печатаю содержимое массива $_FILES): Array ( [filename] => Array ( [name] => AIPort.dll [type] => application/x-msdownload [tmp_name] => Z:\tmp\php17C.tmp [error] => 0 [size] => 258048 ) ) ------------------------------------------------ 2) Если я пробую загрузить файлы от 2 Мб до 8 Мб, тогда я получаю вот такое вот (печатаю содержимое массива $_FILES), понятно что появляются ошибка из-за того, что post_max_size = 2M, в принципе можно в таком случае сравнивать с кодом ошибки, и если код ошибки равен 1, тогда писать письмо, что не удалось загрузить файл, так как он слишком большой, с этим понятно, но вот с 3 пунктом: Array ( [filename] => Array ( [name] => EAGLES - hotel california.mp3 [type] => [tmp_name] => [error] => 1 [size] => 0 ) ) ------------------------------------------------ 3) Если же я пробую загружать файлы больше 8 Мб, тогда я получаю следующее (печатаю содержимое массива $_FILES), из-за того, что upload_max_filesize = 8M, это тоже понятно, но как в таком случае мне узнать размер файла, ведь даже кода ошибки не выводится, и письмо с текстом, мол файл сшиком большой тоже не сформировать: Array ( ) ------------------------------------------------ Подскажите пожалуйста, как в третьем случае, узнать, что файл слишком большой, если загружаемый файл превышает upload_max_filesize? Заранее благодарен!
Решил проблему путем добавления hidden поля в html форму, а далее анализирую $_FILES["filename"]["error"] Может пригодиться кому-то еще. Спасибо всем за помощь и консультирование! HTML: <input type="hidden" name="MAX_FILE_SIZE" value="15728640" /> <input type="file" name="filename"> <input type="button" value="Загрузить"> PHP: if(isset($_FILES["filename"]["tmp_name"]) && is_uploaded_file($_FILES["filename"]["tmp_name"])) { if ($_FILES["filename"]["error"] == 0) { if($type == "jpg") { if (copy($_FILES['filename']['tmp_name'], $uploadfile)) { echo "<p>Файл успешно загружен на сервер</p>"; $message .= "Файл успешно загружен на сервер."; $asd = mail($to, $subject, $message, $headers); } else { echo("<p>Ошибка! Не удалось загрузить файл на сервер, попробуйте повторить попытку позже!</p>"); $message .= "Файл загрузить на сервер не удалось."; mail($to, $subject, $message, $headers); } } else { echo ("Файл не соответствует разрешенному формату"); $message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось, так как он не соответствует разрешенному формату."; mail($to, $subject, $message, $headers); } } elseif ($_FILES["filename"]["error"] == 1 || 2) { echo ("Размер файла превышает 15 мегабайт"); $message .= "Файл загрузить на сервер не удалось, так как он превышает допустимый размер - 15 МБ."; mail($to, $subject, $message, $headers); } elseif ($_FILES["filename"]["error"] == 3) { $message .= "\r\n\r\n\r\nФайл загружен на сервер частично."; mail($to, $subject, $message, $headers); } else { $message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось."; mail($to, $subject, $message, $headers); } } else { mail($to, $subject, $message, $headers); }