[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Количество загружаемых на сервер файлов
Гость
Нужна загрузка картинок в админ_зоне для статей...файлики не большие 10-100кб.
Грузится через форму, обрабатывается примерно так
 
for ($i=1; $i<20; $i++)
{
$t = $i-1;
$rand=mt_rand(1, 999);
if ($_FILES['filename1']['name'][$t]&&$_FILES['filename2']['name'][$t])
{
$f = $i.'.jpg';
move_uploaded_file($_FILES['filename1']['tmp_name'][$t],$p.'/'.$i.'.jpg');
move_uploaded_file ($_FILES['filename2']['tmp_name'][$t],$p1.'/'.$i.'.jpg');

и тд...


Загрузка работает, но грузится лишь 10 картинок. 11ая уже не загружается.
а даже если в форме оставить 10 первых пустые, а 11 заполнить - загрузка не идет.
Прям бред какой-то :(

Может больше и нельзя? во всем интернете информацию не нашел. Есть лишь установки размера передаваемых файлов в php.ini



Спустя 29 минут, 5 секунд (16.12.2010 - 00:01) GRean написал(а):
С такой я проблемой сталкивался, но не в php, а в action script. Суть в том, что стоит ограничение в браузере на максимальную загрузку файлов за раз.Вроде как в каждом браузере свой лимит на закачку. Выход? делай обработчик закачки.

Спустя 33 минуты, 44 секунды (16.12.2010 - 00:35) ИНСИ написал(а):
Гость вижу как минимум 3 варианта:

1. В начале файла поставь:
set_time_limit(0);

2. Попробуй в таком варианте все сделать:
while(list($uploadFile) = each($_FILES)) {
// тут сам код загрузки
}

3. А зачем у тебя 2 загрузки сразу? Маленькая и большая фотка?

Спустя 8 часов, 14 минут, 45 секунд (16.12.2010 - 08:50) Guest написал(а):
да, две формы - для маленькой и большой картинки.
маленькая обычно не сжатая большая, а определенный участок большой картинки для наглядности.
Можно конечно быстренько переписать все и сделать загрузку по другому, но просто интересно почему так.
думаю не один из вариантов предложеных неверный.
даже если первые 10 оставить пустые поля, а заполнить лишь 11и12 - картинки не грузятся...Скорее всего есть какое-то мифическое ограничение. но какое...
на сервере лишь
php_value post_max_size 256M
php_value upload_max_filesize 256M
и все.... других настроек нет.
помогите)

Спустя 1 час, 45 минут, 56 секунд (16.12.2010 - 10:36) linker написал(а):
print_r($_FILES);
расставит все на свои места, правь свой цикл, там бред написан.

Спустя 9 минут, 29 секунд (16.12.2010 - 10:45) Guest написал(а):
linker, объясните в чем бред, если не трудно huh.gif

Спустя 3 минуты, 10 секунд (16.12.2010 - 10:48) Guest написал(а):
мне кажется бред несете Вы

Спустя 9 минут, 1 секунда (16.12.2010 - 10:57) Basili4 написал(а):
если это не бредни

if ($_FILES['filename1']['name'][$t]&&$_FILES['filename2']['name'][$t])
{
$f = $i.'.jpg';
move_uploaded_file($_FILES['filename1']['tmp_name'][$t],$p.'/'.$i.'.jpg');
move_uploaded_file ($_FILES['filename2']['tmp_name'][$t],$p1.'/'.$i.'.jpg');

то это мир стоит того чтобы сгореть в огне. wink.gif

Спустя 1 минута, 27 секунд (16.12.2010 - 10:59) Guest написал(а):
Basili4, ну так объясните в чем тут бред!!!

Спустя 3 минуты, 27 секунд (16.12.2010 - 11:02) Basili4 написал(а):
Guest
ответь на вопрос зачем это ???? нужно что оно делает.

потом задай еще один вопрос зачем ????

и третий вопрос если ты сможешь дать на него правильный ответ ты сам ответишь на свой изначальный вопрос.

Цитата (Guest @ 16.12.2010 - 11:59)
в чем тут бред!!!

так 3 вопрос. Как это оптимизировать.





Спустя 2 минуты, 41 секунда (16.12.2010 - 11:05) Guest написал(а):
Basili4, в данном случае я считаю,что абсолютно прав.

Если у Вас нет слов тыкнуть и указать на ошибку - то Вы очень зазнались

Спустя 40 секунд (16.12.2010 - 11:05) Basili4 написал(а):
исходя из задачи.

тебе нужно загрузить 10 фалов на сервер так.
У тебя 10 элементов для загрузки файлов

после передачи фалов на сервер пиши print_r($_FILES);
и закоченеть свой цикл. увидишь структуру которую надо обработать.

и начинай обрабатывать по элементам начиная с 0 заканчивая 9

и не надо городить огороды с условиями просто обрабатывай текущий элемент.

Спустя 8 секунд (16.12.2010 - 11:06) linker написал(а):
Ну во-первых, у тебя куча ошибок обращения к несуществующим элементам массивов. Во-вторых, у тебя два разных массива файлов с именами "filename1" или "filename2", как я могу судить в этих массивах может быть разное количество файлов. Когда массив динамический и неизвестно количество элементов можно использовать foreach(). Но в твоем случае сойдет пока и банальная проверка isset($_FILES['filename2']['name'][$i])
for($i = 0; $i < 10; $i ++)
{
if (isset($_FILES['filename1']['name'][$i]))
move_uploaded_file($_FILES['filename1']['tmp_name'][$i], $p . '/' . ($i + 1) . '.jpg');
if (isset($_FILES['filename2']['name'][$i]))
move_uploaded_file($_FILES['filename2']['tmp_name'][$i], $p1 . '/' . ($i + 1) . '.jpg');

...


}


Спустя 1 минута, 21 секунда (16.12.2010 - 11:07) Basili4 написал(а):
Guest
я не буду писать код для тебя. это не принесет пользы не тебе не мне. Я написал свое виденье проблемы. если ты считаешь что прав то да Ты прав..

Спустя 6 минут, 27 секунд (16.12.2010 - 11:13) Guest написал(а):
Basili4, специально для тебя, и для тех кто не хочет/не умеет читать все полностью и с начала повторю более разжовано.
Задача:
загрузить 40 картинок на сервер. За раз. не очень больших - в то место где они нужны в статье будующей.

из этих 40 картинок - 20 полупревью (маленькие картинки с понятным содержимым, которые дают понять что будет на большой) и 20 полноценных картинок 800х600.
два массива - filename1 и filename2

цикл обрезал и выставил для понятния общего алгоритма обработки - не надо смотреть на переменную t,f и думать для чего они нужны там.
они для дальнейшей работы с БД, да и дело тоже в не этом.
переменные p и p2 тоже не нужны для понимания.
число 20 в цикле опять же чтобы было понятно кол-во картинок которые должны будут загружены. ВАМ.

В общем проблема решилась тем, что она не решаема.
Максимальный элемент массива filename - от 0 до 9
итого всего 10 картинок можно отправить за раз.
т.е. 20 в двух массивах.

вопрос отпал.
спасибо за конструктив, которого не оказалось

Спустя 2 минуты, 29 секунд (16.12.2010 - 11:16) Guest написал(а):
linker, в моей задаче нужна именно проверка, чтобы существовали элементы массива filename1[1] и filename2[1] (НАПРИМЕР)
если не будет хотя бы одного из них - мне это не интересно.
только парами.

Спустя 5 минут, 45 секунд (16.12.2010 - 11:22) Basili4 написал(а):
Guest
не решаемых задач нет есть кривая архитектура.

Спустя 54 секунды (16.12.2010 - 11:23) kovaldm написал(а):
Я не понял из-за чего сыр-бор. Тс, читаешь вот это. Все вопросы сами собой отпадут.

Спустя 4 минуты, 20 секунд (16.12.2010 - 11:27) Guest написал(а):
kovaldm, уважаемый, Вы в своем уме или не умеете тоже читать?

Basili4, согласен, но стоит отталкиваться от конкретных задач.
все уже исправил, и грузятся все картинки

Спустя 19 минут, 1 секунда (16.12.2010 - 11:46) linker написал(а):
Guest
А ты не пробовал разобраться в библиотеке GD, чтобы превью делать самому, а не заставлять пользователя?

Спустя 5 минут, 56 секунд (16.12.2010 - 11:52) Guest написал(а):
linker
1. это админ_зона для меня лично.
2. превью это не сжатая картинка со всех сторон, а чуть уменьшана и обрезана для лучшего понимания изображения. Поэтому делается все в ручную.
напримиер:
user posted image
и
user posted image

Спустя 8 минут, 11 секунд (16.12.2010 - 12:00) linker написал(а):
Тогда понятно.

Спустя 1 час, 15 минут, 3 секунды (16.12.2010 - 13:15) ИНСИ написал(а):
Guest ты сам создал себе проблему. Неправильно скрипт написал. Тебе люди пытались помочь сделать все правильнее, а ты не хочешь и пытаешь других обвинить в том, что они не читают твой тест.

Они наоборот. Читают, видят что ты еще новичок и помогают советами. Лучше прислушайся и сделай все по человечески. Ты себе потом работу облегчешь.

Спустя 1 час, 8 минут, 32 секунды (16.12.2010 - 14:24) Guest написал(а):
welbox2, до сих пор не понимаю, почему скрипт написан не правильно??? он написан так как требуется в данном исключительном случае.
И кто сказал, что я новичек?
у меня была проблема, и никто ее не решил по другому из людей здесь присутствующих, включая Вас. set_time_limit(0); был написан ранее.
Укажите мне на явные ошибки!
Проблема, что нельзя отправить из одной формы и одного массива больше 10 файлов за раз. Можно используя - 2,3,4 массива. В этом и был вопрос.

Спустя 1 час, 51 минута, 6 секунд (16.12.2010 - 16:15) Guest написал(а):
хочется поправиться в итоге.
отправить за раз можно не больше 20 файлов. не важно - 1 массив, 2 или 4 это будет. При том не важно указаны ли файлы во всех полях или нет. вот такой вот этот $_FILES
может кому-нибудь пригодится.
Выход - отправлять за два раза) иначе никак.
сделал добавлялку для каждого раздела.

Спустя 1 минута, 44 секунды (16.12.2010 - 16:16) Basili4 написал(а):
Guest
ИМХО дело не в количестве файлов а в их размере.

Спустя 15 минут, 26 секунд (16.12.2010 - 16:32) Guest написал(а):
увы но это не так sad.gif
максимальный размер файла и общего размера файлов 256мб

Спустя 23 минуты, 4 секунды (16.12.2010 - 16:55) hellmin написал(а):
Жаль что не видно всего цикла обработки...
потому что если в теле цикла нечаянно вставить $i++ , то получим как раз результат в 10 файлов
for ($i=1; $i<20; $i++) {
...
$i++;
}

Спустя 1 час, 4 минуты, 45 секунд (16.12.2010 - 18:00) Guest написал(а):
hellmin
дело не в цикле, а содержимом $_FILES
print_r($_FILES);

Спустя 2 часа, 12 минут, 24 секунды (16.12.2010 - 20:12) kovaldm написал(а):
Почему ты так уверен? Если у тебя цикл отрабатывает только первые 10 элементов, то дело явно не в массиве.

Спустя 12 часов, 54 минуты, 57 секунд (17.12.2010 - 09:07) hellmin написал(а):
Предлагаю привести все тело цикла в студию!
Разговаривать о том чего не видно довольно сложно.
А в передаваемой форме кроме input type='file' еще что-то передается?

Спустя 2 часа, 48 минут, 44 секунды (17.12.2010 - 11:56) Guest написал(а):
зачем спорить?)))
я еще раз повторяю отправтье 40 файлов за раз. И в приемки посмотрите содержимое массива! При чем тут вообще цикл то.??????????
Вы эксперты пхп?
циклы вроде лет 15 назад учился строить)

Из 4 отправленных массивов доходит только 2 массива с элементами 0-9.
т.е. двадцать файлов за раз.
Можно сделать и так, чтобы доходили 4 массива но ограничить кол-во элементов до 5.

Спустя 1 час, 21 минута, 45 секунд (17.12.2010 - 13:18) kovaldm написал(а):
Цитата
я еще раз повторяю отправтье 40 файлов за раз. И в приемки посмотрите содержимое массива!

Отправил, дошли все.

Спустя 1 час, 15 минут, 22 секунды (17.12.2010 - 14:33) Self написал(а):
php.ini
max_file_uploads = 20

Спустя 1 час, 8 минут, 26 секунд (17.12.2010 - 15:41) Guest написал(а):
Self, похоже, что Вы правы!

19 ноября команда разработчиков PHP представила новый релиз PHP 5.3.1 направленный на увеличение стабильности ветки 5.3.x По завялениям разработчиков исправлено более 100 ошибок, некоторые из которых связаны с безопасностью. Всем рекомендуется обновиться до этой версии.
Вот некоторые из изменений:
Добавлена директива «max_file_uploads» в php.ini, которая может установить количество запросов при закачке файлов, для предотвращения DOS атак.
Исправлен обход режима safe_mode в tempnam()
Исправлен обход «open_basedir» директивы в функции posix_mkfifo
Исправлено отсутствие safe_mode_include_dir

на моих хостингах нету доступа к php.ini
попробовал через .htaccess - php_value max_file_uploads 60
но не помогло. Написал запрос хостеру могут ли они изменить.

в интернете при запросе "max_file_uploads" выдается - "Дополнительно ограничение на размер загружаемого файла устанавливается в файле php.ini (параметр max_file_uploads)." - что видимо является не правдой.
не размер а кол-во одновременных закачек.

Спустя 6 минут, 25 секунд (17.12.2010 - 15:48) Self написал(а):
в php.ini:
Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

Спустя 3 минуты, 9 секунд (17.12.2010 - 15:51) Guest написал(а):
и еще
22 декабря 2009 Добавлена конфигурационная переменная max_file_uploads, которая устанавливает ограничение на количество файлов, загружаемых за один запрос до 20 по-умолчанию.

Так что никак мне в итоге не отправить 40 файлов за раз, без смены хостера.
Сделал просто ниже еще одну форму для добавления остальных фото.

ну вот и все. вроде как разобрались наконец.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.