У меня есть форма загрузки с файлом, который будет загружен. Проблема, которую я имею, является этим, даже когда никакой файл не загружается если (isset ($ _FILES)) ИЛИ если (! пустой ($ _FILES)), все еще передает как успешный:
$_FILES = $HTTP_POST_FILES;
if($_POST['type'] == 'photo' && isset($_FILES)){
// returns true even if no file is uploaded. What am I missing!
}
Будучи суперглобальным, $_FILES
предположительно всегда установлен, независимо от того, существует ли загруженный файл или нет.
Проверьте загрузку файла(ов), которую вы ожидаете, и посмотрите на поле размера. (По-видимому, в соответствии с User Contributed Notes в руководстве, если форма содержит элемент upload, возможно, что даже isset($_FILES["my_file_name"])
вернет true, несмотря на отсутствие выбранного файла.
Это должно работать надежно:
if($_POST['type'] == 'photo' &&
((isset($_FILES["my_file_name"]["size"]) &&
($_FILES["my_file_name"]["size"] > 0)) ){
(isset() - для предотвращения уведомления "undefined index".)
Для чего вы это делаете, кстати?:
$_FILES = $HTTP_POST_FILES;