Как проверить, было ли изображение отправлено с другими данными формы - PullRequest
2 голосов
/ 04 февраля 2012

У меня есть форма регистрации пользователя, и загрузка изображения с другими элементами формы здесь необязательна.Поэтому иногда пользователи могут не загружать изображение вместе с другими данными.

Теперь проблема в том, что даже если пользователь не загрузил изображение, следующий код всегда повторяет, что файл был загружен

Не могли бы вы, пожалуйста, сказать мне, как проверить, было ли изображение отправленопользователь и сделать его эхо / дисплей "не загружен", если не загружен?

Заранее спасибо:)

В моем файле контроллера

extract($_POST); // <<This is to retrieve all form data at once

if(isset($_FILES['userfile'])){
    echo"file uploaded";
} else{
    echo "Not Uploaded";
}

Это в моемПросмотр файла

<input type="file" class="" name="userfile" size="20" />

Ответы [ 2 ]

16 голосов
/ 04 февраля 2012

По документации PHP:

Если для загрузки в форму не выбран файл, PHP вернет $ _FILES ['userfile'] ['size'] как 0 и $ _FILES ['userfile']['tmp_name'] как none.

source: http://www.php.net/manual/en/features.file-upload.post-method.php

Таким образом, ваше условное выражение может измениться на:

if(isset($_FILES['userfile']) && $_FILES['userfile']['size'] > 0){
     echo"file uploaded";
} else echo "Not Uploaded" ;
2 голосов
/ 04 февраля 2012

Вы можете объединить обе проверки:

 if (count($_POST) and !empty($_FILES['userfile'])) {

       // uploaded

 }
 else {

       // either is missing

 }

Обратите внимание, что вы должны не использовать extract($_POST);.Вы не можете контролировать, какие локальные переменные будут перезаписаны извне.(Если больше ничего не расследует EXTR_PREFIX.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...