Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2018, 17:04   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию Отловить число загружаемых файлов php

Вроде вопрос простой, но гугл не дал ответа. Собственно по дефолту число загружаемых файлом при мультизагрузки 20. И Я не хочу его менять!

Я хочу поймать число вот это как на скрине prnt.sc/iflqdg
И если чел нажмет обработать, ему скажет, ну ты че бро, больше 20 файлов за раз грузить нельзя.

1. Как отловить число загружаемых файлов?

2. Ну и сразу еще вопрос, есть параметр как максимальный размер загружаемого файла. Дак вот, если идут мультизагрузка, а параметр например установлен пусть 50метров, то это распространяется ограничение на каждый файл по отдельности, или на общую сумму веса всех файлов при загрузке. То есть гружу 10 файлов за раз, если каждый файл будет весит 49метров, в сумме 490 метров, это даст загрузить ?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 16.02.2018, 17:53   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

1. Чем выполняется мультизагрузка – библиотекой какой-нибудь, или на голом PHP?
Большинство библиотек уже имеют встроенную валидацию, в т.ч. и количества загружаемых файлов.
Если на голом PHP:
На клиенте количество можно отловить так:
Код:
var numFiles = $('#files')[0].files.length; // #files – id поля формы
На сервере – через подсчет количества элементов в $_FILES:
PHP код:
$NUM_FILES count($_FILES['files']['tmp_name']); // files – имя поля формы 
2. Файлы загружаются по очереди, так что в контексте вопроса имеет значение только размер каждого файла в отдельности, а не суммарный.
Andkorol вне форума Ответить с цитированием
Старый 16.02.2018, 18:16   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

$NUM_FILES = count($_FILES['files']['tmp_name']); // files – имя поля формы

Этот вариант возвращает 20 всегда, хоть 30 файлов выбрал, то есть потолок - не отображает реальное количество выбранных файлов как на скрине. На сервере отловить хотел.

Голым php хочу понять как сделать.

Последний раз редактировалось a.n.o.n.i.m; 16.02.2018 в 18:21.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 16.02.2018, 19:05   #4
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Видать это проблематичный вопрос, на который ответ мало кто знает))
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 16.02.2018, 21:29   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
На сервере отловить хотел.
Голым php хочу понять как сделать.
Цитата:
Сообщение от a.n.o.n.i.m Посмотреть сообщение
Видать это проблематичный вопрос, на который ответ мало кто знает))
Да нет тут никакой проблемы, я ж дал уже ответ.
На сервер приходит то, что уже отправилось из формы.
То, что ты хочешь сделать – нужно делать на клиенте.
Вот наглядный, рабочий пример:
Код:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<form>
    <input type="file" name="files[]" multiple="multiple" id="files"><br>
    <button type="button" id="btn">Send</button>
</form>

<script type="text/javascript">
    jQuery(document).ready(function($) {
        $('#btn').click(function(){
            alert($('#files')[0].files.length);
        });
    });
</script>
Andkorol вне форума Ответить с цитированием
Старый 17.02.2018, 15:07   #6
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

О чудно, спасибо, увы с js пока проблемы с синтаксисом, как там делается ограничение, что если выбрано больше 20 файлов,то скажет что нельзя больше 20 и не переходить к выполнению скрипта пхп, иначе выполнить скрипт пхп?
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 17.02.2018, 15:22   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Слишком много халявы будет для одного топика
Выходные – это отличная возможность подучить базовый синтаксис JS.
Andkorol вне форума Ответить с цитированием
Старый 17.02.2018, 16:49   #8
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Хорошо.

Код:
<script type="text/javascript">
    jQuery(document).ready(function($) {
        $('#btn').click(function(){
            var count = $('#files')[0].files.length;
            if(count > 20)//
            {
                alert("Максимлаьно количество файлов для разовой нагрузки: 20. Вы выбрали: " + $('#files')[0].files.length + " файлов. Пожалуйста повторите попытку.");
                return false;
            }
        });
    });
</script>
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 17.02.2018, 16:59   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Надо бы добавить else и отправку формы.
Andkorol вне форума Ответить с цитированием
Старый 17.02.2018, 17:26   #10
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Ну кнопка запускает скрипт пхп если до 20 файлов, я этого и добивался. А иначе говорит что много выбрал, и ничего не происходит.
a.n.o.n.i.m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему уменьшился максимальный размер загружаемых файлов? Вадим Мошев О форуме и сайтах клуба 1 03.08.2013 22:51
Лимит для загружаемых фотох на пикселах FeGan JavaScript, Ajax 0 03.12.2011 20:31
Как убрать путь загружаемых файлов в плеере плеером) Avelhar Мультимедиа в Delphi 3 02.06.2011 15:44
Инициализация загружаемых компонент Oburec Компоненты Delphi 0 12.07.2009 19:04
Имена загружаемых файлов на кириллице krok PHP 3 05.12.2008 10:42