Почему в $_FILE может передаваться только один, последний файлы из прикрепленных в input?
Собственно вопрос в заголовке - на сервер в массиве $_FILE прилетает только один файл связанный с полем.
Все что нагугливается связано либо с сохранением файлов, либо с тем что на input нет multiple.
У меня есть. Через js, на событии change вижу что в поле прикрепляется FileList и все ок.
В чем может быть причина?
(два тега ищущихся по HTTP, потому что тега HTTP нет)
Дополнительно:
поле должно называться filedetect[]
- Ну блин... мне уже стыдно. Спасибо. Видно переработался.
Ответы:
Не $_FILE надо использовать, а надо использовать $_FILES
https://snipp.ru/php/files-array
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос


Проблема, с которой вы столкнулись, связана с тем, что при передаче файлов через элемент input типа file в PHP, в массиве $_FILES доступен только один файл, а не все загруженные файлы. Это происходит из-за того, что в HTML форме для загрузки файлов используется атрибут name, который должен быть уникальным для каждого элемента input.
Для того чтобы передать несколько файлов через элемент input типа file, вам необходимо использовать атрибут multiple. С его помощью пользователь сможет выбирать и загружать несколько файлов одновременно. При этом в массиве $_FILES будут доступны все загруженные файлы с различными индексами.
Пример HTML кода с использованием атрибута multiple:
После отправки формы, в файле upload.php вы сможете обработать загруженные файлы следующим образом:
if(isset($_FILES['files'])){ $errors = []; $upload_dir = 'uploads/'; foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){ $file_name = $_FILES['files']['name'][$key]; $file_size = $_FILES['files']['size'][$key]; $file_tmp = $_FILES['files']['tmp_name'][$key]; $file_type = $_FILES['files']['type'][$key]; if($file_size > 2097152){ $errors[] = 'File size must be less than 2 MB'; } if(empty($errors)){ move_uploaded_file($file_tmp, $upload_dir.$file_name); } } if(!empty($errors)){ print_r($errors); } }
Таким образом, вы сможете загружать несколько файлов одновременно и обрабатывать их в PHP скрипте. Не забудьте также добавить проверки на тип и размер файлов, чтобы обеспечить безопасность и целостность данных.