@Vladimir-Hetman

Проверка на пустой файл в пост форме?

Когда я жму отправить пустую строку(не загружаю ни один файл)
через пост форму для передачи файлов,
тогда у меня срабатывает условие if(!empty), но почему?

Var_dump показывает, что $_FILES["download"]["name"]) пустой, там ничего нет.
array(4) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" }
Все по нолям!

Как сделать так, чтобы при отправки пустой строки(без загрузки файлов)
условие if не работало, а работало тогда, когда был отправлен хотя бы один файл или больше.


<form method ="POST" enctype="multipart/form-data">   
<input type="file" name="download[]" size="10" />
<br><br>
<input type="file" name="download[]" size="10" />
<br><br>
<input type="file" name="download[]" size="10" />
<br><br>
<input type="file" name="download[]" size="10" />
<br><br>
<input type="submit" value="Загрузить">
</form>


if(!empty($_FILES["download"]["name"]) ){
echo "da";
}
  • Вопрос задан
  • 199 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Вообще-то $_FILES["download"]["name"] у вас не empty(), там массив, из 4-х элементов. А вот все элементы этого массива - вот они уже empty(). Сделайте тогда уж
if(is_array($_FILES["download"]["name"]) AND implode("", $_FILES["download"]["name"]) != "")
Ответ написан
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Проверять надо не на "пустую строку", а на наличие ошибок. Для чего в массиве $_FILES есть специальный элемент. Который и надо проверять всегда при загрузке файлов.

При этом надо определиться - зачем загружается несколько файлов. Если речь об одном файле, то зачем делать 4 поля ввода? Если нужно несколько файлов, то почему проверяется только один? Проверять тогда надо все, в цикле.

Вообще всегда полезно читать инструкцию перед тем как садиться что-то делать. Или хотя бы после того как ничего не заработало.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы