2012-03-21 2 views
21

У меня есть эта простая, хорошо известная форма для загрузки нескольких файлов. Что-то в этом роде ...Подсчитайте и ограничьте количество загруженных файлов (вход в файл HTML)

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

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

Заранее благодарен. :)

+0

Вы всегда можете заблокировать его в коде PHP, но там не хватает информации здесь, чтобы узнать, как ваш интерфейс ведет себя. – Scuzzy

ответ

7

Вы можете реализовать решение javascript для проверки количества файлов, которые были выбраны, что вы можете использовать, чтобы запретить загрузку на сервер. На самом деле, на самом деле это будут только клиентские решения этой проблемы, потому что в действительности нет ничего, что помешает пользователю публиковать эти файлы на вашем php-скрипте. Вы можете указать максимальный максимальный размер загружаемого файла, но он не зависит от количества загружаемых файлов.

Лучше всего выполнить некоторую проверку javascript, указав разумный максимальный размер загрузки для вашего HTTP-сервера (или на PHP), а затем проигнорируйте любой загруженный файл, если он превышает ваш максимальный счет.

Читайте о HTML5 File API здесь, чтобы ограничить количество выбранных файлов: 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

+8

', поскольку на самом деле ничего не мешает пользователю публиковать эти файлы в вашем php-скрипте': На самом деле есть. В 'php.ini' вы можете ограничить это число опцией' max_file_uploads' (http://www.php.net/manual/en/ini.core.php#ini.max-file-uploads) – marvin

+2

@marvin: добавьте его как ответ, пожалуйста, – zerkms

+1

@marvin Я предположил, что «Максимальное количество файлов, разрешенных для загрузки _simultaneous_» означает метод предотвращения одновременных HTTP-подключений, загружающих разные файлы. Разве это не так? – GoldenNewby

0

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

Дополнительная информация о Uploadify Multiple Uploads.

7

все мы знаем, что в массиве 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 
} 
Смежные вопросы