У меня есть эта базовая, хорошо известная множественная форма загрузки файлов. Что-то вроде того…
<input type="file" multiple="multiple" name="something[]" />
Есть ли способ (предпочтительнее жестко закодированный вариант), чтобы ограничить количество файлов, которые пользователь может выбрать? По ограничению i означает строго заблокированное, а не только предупреждение, если число превышено.
Заранее спасибо. 🙂
Вы можете реализовать решение javascript для проверки количества выбранных файлов, которые затем можно использовать для запрещения загрузки на сервер. На самом деле, на самом деле это будут только клиентские решения этой проблемы, потому что в действительности нет ничего, что помешает пользователю публиковать эти файлы на вашем php-скрипте. Вы можете указать максимальный максимальный размер загружаемого файла, но он не зависит от количества загружаемых файлов.
Лучше всего выполнить некоторую проверку javascript, указав разумный максимальный размер загрузки для вашего http-сервера (или на PHP), а затем проигнорируйте любой загруженный файл, если он превысит ваш максимальный счет.
Ознакомьтесь с API-интерфейсом HTML5 здесь, чтобы ограничить количество выбранных файлов: http://dev.w3.org/2006/webapi/FileAPI/
Вот документы php.ini, в которых объясняется, как сделать ограничение размера при загрузке: http://php.net/manual/en/ini.core.php
Как было предложено в комментариях, проверьте: http://php.net/manual/en/ini.core.php#ini.max-file-uploads
все мы знаем, что в массиве first element is stored in 0 th index, 2nd in 1st index......nth in (n-1)th index
теперь вы не можете считать count($_FILES['something'])
который всегда будет возвращать 5, поскольку в массиве есть 5 ключей
теперь вопрос в том, что $_FILES['something']['name'][0]
? => имя первого загруженного файла
поэтому проверьте
if(empty($_FILES['something']['name'][0])) { //checking whether a single file uploaded or not //if enters here means no file uploaded //so if you want you may put a check/validation here to make file //upload a must in your website } if(isset($_FILES['something']['name'][5])) { //checking whether 6 files uploaded or not //so here you can put a check/validation to restrict user from //uploading more than 5 files }
-if(empty($_FILES['something']['name'][0])) { //checking whether a single file uploaded or not //if enters here means no file uploaded //so if you want you may put a check/validation here to make file //upload a must in your website } if(isset($_FILES['something']['name'][5])) { //checking whether 6 files uploaded or not //so here you can put a check/validation to restrict user from //uploading more than 5 files }
-if(empty($_FILES['something']['name'][0])) { //checking whether a single file uploaded or not //if enters here means no file uploaded //so if you want you may put a check/validation here to make file //upload a must in your website } if(isset($_FILES['something']['name'][5])) { //checking whether 6 files uploaded or not //so here you can put a check/validation to restrict user from //uploading more than 5 files }
Чистые альтернативы Js, которые делают это и многое другое:
FineUploader . демонстрация
bluimp's jQuery File Upload Plugin . Использование: загрузка файла jquery с ограничением количества файлов
Они также доступны на https://cdnjs.com/
Некоторые плагины, похоже, помогают в этом, например: Uploadify (основанный на флэш-памяти) . Однако я не использовал этого или другого достаточно, чтобы узнать, могут ли они ограничивать их ограничение загрузки.
Дополнительная информация о загрузке нескольких загрузок .