Проверьте, существует ли файл в массиве файлов загрузки

Я получил форму на frontend, чтобы отправить материал, в котором мне нужно проверить, существует ли файл для отправки.

Обратите внимание, что форма представляет массив файлов . Он терпит неудачу во всех логиках, которые я пытался. Обратите внимание на upload[] во второй строке html.

HTML

 <form method="post" id="upload-form" action="" enctype="multipart/form-data" > <input type="file" multiple="true" name="upload[]"> <input type="submit" name="upload_attachments" value="UPLOAD"> <form> 

PHP

 if(!file_exists($_FILES['upload']['tmp_name'].'/'.$FILES['upload']['name'])) { $upload_error = 'file is not set !'; return; //stop further code execution }else{ //do further validation } 

В приведенном выше коде показано, 'file is not set !' в обоих случаях, то есть когда я нажимаю кнопку отправки без загрузки файла и когда я выбираю, чтобы загрузить файл и нажать кнопку отправки.

Что здесь происходит, я даже делаю это правильно?

В основном я хочу вернуть сообщение «Пустое», когда кто-то нажимает кнопку отправки, не выбирая файл для загрузки и останавливая дальнейшее выполнение кода.

Related of "Проверьте, существует ли файл в массиве файлов загрузки"

$_FILES[<key>]['tmp_name'] – содержит путь к файлу на сервере

$_FILES[<key>]['name'] – это просто оригинальное имя файла

Для обращения к массиву файлов file[] вам необходимо получить данные с помощью $_FILES[<key>][<property>][<id>]

пытаться

 if(!file_exists($_FILES['upload']['tmp_name'][0])) { 

Руководства

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

http://www.php.net/manual/en/features.file-upload.multiple.php

Вы добавляете tmp_name и имя. Это не нужно. Просто проверьте имя загруженного файла, например;

 if(empty($_FILES['upload']['name'])) { $upload_error = 'file is not set !'; return; //stop further code execution }else{ //do further validation } 

или вы можете проверить существование файла как;

 if(!file_exists($_FILES['upload']['tmp_name'][0])) { $upload_error = 'file is not set !'; return; //stop further code execution }else{ //do further validation } 

Формат вашего множественного массива файлов приведен ниже;

 Array ( [name] => Array ( [0] => foo.txt [1] => bar.txt ) [type] => Array ( [0] => text/plain [1] => text/plain ) [tmp_name] => Array ( [0] => /tmp/phpYzdqkD [1] => /tmp/phpeEwEWG ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 123 [1] => 456 ) ) 

Вы можете обратиться сюда

Вы можете использовать функцию is_uploaded_file php.

Вот выдержка из сайта php о функции.

Для правильной работы функция is_uploaded_file () нуждается в аргументе, таком как $ _FILES ['userfile'] ['tmp_name'], – имя загруженного файла на машине клиента $ _FILES ['userfile'] ['name'] не работа.

http://www.php.net/manual/en/function.is-uploaded-file.php

Попробуй это

  if (empty($_FILES['upload']['name'])) { // No file was selected for upload, your (re)action goes here } note: place this code above if(!file_exists($_FILES['upload']['tmp_name'].'/'.$FILES['upload']['name'])) {