Ограничить количество выбранных файлов - PullRequest
4 голосов
/ 04 июля 2011

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

Как бы я это сделал?

PS: у меня есть цикл foreach, который выглядит следующим образом:

foreach ($_FILES['file']['tmp_name'] as $key => $tmp_name)

Было бы приветствоваться PHP-решение.Так как я не доверяю javascript и jquery по этому вопросу.

РЕДАКТИРОВАТЬ:

Это мой сценарий: http://pastebin.com/76NiNB6D

Ответы [ 2 ]

1 голос
/ 04 июля 2011

Ваш цикл пытается обойти строку. Может быть, вы имели в виду:

$number_of_files = 0;
foreach ($_FILES as $file)
{
    if ($file['error'] == 0)
    {
        // file uploaded successfully
        $number_of_files++;
    }
}

if ($number_of_files > 10)
{
    die('You uploaded too many files!');
} else {
    foreach ($_FILES as $file)
    {
        if ($file['error'] == 0)
        {
             copy_the_file_to_destination(); // left as an excercise for the reader ;-)
        }
    }
}

Вы можете просто сделать count($_FILES);, но он будет считать все входные данные файла, даже те, которые пусты.

0 голосов
/ 05 июля 2011

Я нашел ответ PHP, который искал себе сейчас!: D.Я сделал следующее:

Я проверил ответ Карлоса и поместил переменную со значением 0 вне цикла.Затем я создал проверку ошибок, как это сделал Карлос: if ($file['error'] == 0) Затем я снова сделал то, что сделал Карлос внутри этого заявления IF $number_of_files++;

Теперь я вышел из цикла и сделал следующее:

if ($uploaded > 10)
{
    unlink($image);
    unlink($thumb);
    if ($resize) { unlink($res); }
 }

Это автоматически удаляет 11-е изображение и сохраняет на моем сервере всего 10 изображений.

Спасибо за всю информацию, Карлос, думаю, я довольно неплохо скомбинировал ее: P

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