PHP Upload IF ISSET всегда говорит, что это так?

Хорошо, у меня есть какая-то странная проблема с моим кодом. Я пытаюсь сделать загрузку формы с текстом по фотографиям. Теперь мне нужно проверить, загружена ли фотография или только текст вставлен.

Упрощенный код выглядит следующим образом:

if (isset ($_FILES['image'])){ echo 'yes'; } else { echo 'no'; } 

форма выглядит так:

  <form action="" method="post" enctype="multipart/form-data" class="contact-form"> <form action="" method="post" enctype="multipart/form-data" class="contact-form"> <label for="title"><strong>Title</strong> (required)</label> <input type="text" name="title" value="" required> <label><span class="small"><strong>Add a photo</strong></span></label> <input type="file" name="image"/> <input type="submit" name"submit" value="Submit"> </form> 

Теперь, в основном, то, что я пытаюсь сделать, это проверить, прикреплен ли файл или нет, потому что мне нужна альтернативная опция для размещения сообщений без фотографий в той же форме; но проблема заключается в том, что нет, если он прикреплен или нет, он всегда говорит «ДА».

Помогите, кто угодно.

Чтобы проверить, был ли файл загружен, как насчет:

 if (!file_exists($_FILES['image']['tmp_name']) || !is_uploaded_file($_FILES['image']['tmp_name'])) { echo 'No upload'; } else { // Your file has been uploaded } 

is_uploaded_file() – это выбор здесь, проверьте документы для него.

$_FILES – это массив файлов, и каждому файлу в первом измерении массива автоматически присваивается ключ ['tmp_name'] во втором измерении со значением, являющимся его временным расположением.

Очевидно, вам необходимо использовать move_uploaded_file() во временном файле.

Вы проверяете только то, что $_FILES['image'] передано из вашей формы.
Но вы не проверяете, что размещенное $_FILES['image'] пусто или оно содержит действительные данные файла
Подробнее здесь http://www.php.net/manual/en/features.file-upload.php

 <?php if ( isset( $_FILES["image"] ) && !empty( $_FILES["image"]["name"] ) ) { if ( is_uploaded_file( $_FILES["image"]["tmp_name"] ) && $_FILES["image"]["error"] === 0 ) { // everything okay, do process echo 'yes'; exit(); } } echo 'no'; ?> 

Вместо этого используйте empty ().

 if (!empty ($_FILES['image'])){ echo 'yes'; } else { echo 'no'; }