Подсчет и ограничение количества загружаемых файлов (ввод файла HTML) - PullRequest
22 голосов
/ 22 марта 2012

У меня есть базовая, хорошо известная форма загрузки нескольких файлов. Нечто подобное ...

<input type="file" multiple="multiple" name="something[]" />

Есть ли способ (предпочтительно жестко заданный вариант) ограничить количество файлов, которые пользователь может выбрать? Под лимитом я подразумеваю строго заблокированный, а не просто предупреждение, если число превышено.

Спасибо заранее. :)

Ответы [ 4 ]

8 голосов
/ 22 марта 2012

Вы можете реализовать решение 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

7 голосов
/ 20 мая 2014

мы все знаем, что в массиве 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
}
1 голос

Pure Js альтернативы, которые делают это и многое другое:

Они также доступны на https://cdnjs.com/

0 голосов
/ 22 марта 2012

Некоторые плагины, кажется, помогают в этом, например: Uploadify (на основе flash) .Однако я не использовал этот или другие достаточно для того, чтобы узнать, могут ли они ограничить загрузку.

Дополнительная информация о Загрузить несколько загрузок .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...