Как мне проверить с помощью PHP, был ли файл прикреплен к HTML-форме?

#php #html

#php #HTML

Вопрос:

Мне нужно убедиться, что либо текст был введен в элемент ввода textarea формы, либо файл был прикреплен через элемент ввода file. Я пробовал разные вещи, включая это:

 if((empty($_POST['text'])) amp;amp; (!empty($_FILES['uploadedfile']))) {
            $errors .= 'Please either enter your text or attach a file.<br/><br/>';
        }
  

Не работает.

Спасибо!

Комментарии:

1. Итак, вы хотите отобразить ошибку, когда оба пустых или когда оба не пустые? Но нет, если заполнена только одна из обеих? Строго ИЛИ таким образом?

Ответ №1:

Попробуйте

 if((empty($_POST['text'])) || (empty($_FILES['uploadedfile']))) {
    errors .= 'Please either enter your text or attach a file.<br/><br/>';
}
  

Вам нужно только одно или другое, поэтому вы спрашиваете, является ли поле «текст» пустым или «uploadFile» пустым

Комментарии:

1. Кхм .. Я думаю, что вы хотите, чтобы это || было amp;amp; , поскольку это ошибка, только если оба значения пусты 🙂

2. Имейте в виду, что запись в массиве $_FILES может быть непустой, даже если файл не загружен, вы захотите это проверить $_FILES['uploadedfile']['error'] === 0 .

3. Извинения. Я не прочитал это так, как сначала. Возможно, он мог бы посмотреть на это таким образом. Для какого поля он хочет получить приоритет, тогда, даже если оба поля заполнены, он берет то поле, которое он хочет, и оставляет другое, однако, если заполнено только одно, он берет это. Имеет смысл?

4. Большое вам всем спасибо! И извините, что отнял у вас время. Я только что допустил опечатку — ! перед пустым — и не заметил этого. Еще раз спасибо!

Ответ №2:

 if($_FILES!=null amp;amp; $_POST!=null){
    $file = $_FILES["image"]["tmp_name"];   

    if(!isset($file)){

       }
}
  

это код, который я использовал

Ответ №3:

 if ((!empty($_POST['text']) amp;amp; file_exists($_FILES["image"]["tmp_name"])) || (empty($_POST['text']) amp;amp; !file_exists($_FILES["image"]["tmp_name"]))) {
    throw new Exception('must choose one or other');
}
  

это пройдет, если установлено одно или другое, но не оба и не ни одно.