Я получил форму на 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 !'
в обоих случаях, то есть когда я нажимаю кнопку отправки без загрузки файла и когда я выбираю, чтобы загрузить файл и нажать кнопку отправки.
Что здесь происходит, я даже делаю это правильно?
В основном я хочу вернуть сообщение «Пустое», когда кто-то нажимает кнопку отправки, не выбирая файл для загрузки и останавливая дальнейшее выполнение кода.
$_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'] не работа.
Попробуй это
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'])) {