Вопрос по upload'у нескольких файлов

-=SH@RK=-

Guest
Вопрос по upload'у нескольких файлов

Вот здесь, http://detail.phpclub.ru/article/upload, в подразделе о загрузке нескольких файлов одновременно, описан только скрипт отправки файлов, а какой в этом случае скрипт обработчик?
 

Demiurg

Guest
такой, каким ты его напишешь.
для начала сделай
print_r($_FILES)
 

-=SH@RK=-

Guest
А поподробнее, хотя бы простенький примерчик.
 

Фанат

oncle terrible
Команда форума
-=SH@RK=-
тебе знакомо понятие цикла? Если да - то перебирай в цикле $_FILES.
А если нет - то тебе рано за аплоад браться. Учись программы писать
 
Upload массива файлов. Исп-е Count.

Много было сказано и написано об upload'е. Только в основном все заканчивалось загрузкой одного единственного файла. А если больше?
Ман говорит по этому поводу так: просто задай массив имен форм: name ="userfile[]", а после используй $_FILES['userfile']['name'].
PHP4 Developers Guide (книга, которую не советую покупать!): дала еще один совет, якобы можно умудриться посчитать количество тех самых загружаемых "userfile[]"'ов.
Чтобы не париться в дальнейшем с доработкой кода для загрузки на один/два и т.д. файлов больше, просто достаточно было бы дорисовать новую форму и дай ей такое же значение name= "userfile[]".
Как она предлагает (цитирую одни в один!!!):
PHP:
for ( $nIndex = 0; $nIndex < count ( $userfile ); $nIndex++)  {  
//здесь собственно идет проверка типа загружаемого файла и его копирование  }
Вот тебе и книга. Умудриться вот так по простому подойти к "userfile[]" даже без $_FILES...Гон!
В итоге проштудировав ман выяснил, что обращаться к массиву файлов можно так: $_FILES['userfile']['name'][0], $_FILES['userfile']['name'][1], $_FILES['userfile']['name'][2] и т.д.

И написал такое..
PHP:
for ( $nIndex = 0; $nIndex < 3; $nIndex++)  	{  	
if(!move_uploaded_file($_FILES['userfile']['tmp_name'][$nIndex], $mydir.$_FILES['userfile']['name'][$nIndex])) {   
...
А потом и так:
PHP:
$total_files = count ($_FILES['userfile']['name']); 
for ( $nIndex = 0; $nIndex < $total_files; $nIndex++)  { 
if(!move_uploaded_file($_FILES['userfile']['tmp_name'][$nIndex], $mydir.$_FILES['userfile']['name'][$nIndex])) {  	
print "Ошибка загрузки файла!\n";  
print_r($_FILES);  
print "<br><br><a href=\"up_form.php\">Назад</a>"; 
exit;  } 
}
Все работает. Теперь хочу спросить общество, может я чего опустил и сделал по-деревянному??

-~{}~ 20.08.04 13:40:

В смысле добавляются новое поле <INPUT NAME="userfile[]" TYPE="file">. И все будет загружено.
 

Demiurg

Guest
Александр-HIMиk
массивы рекомендуется перебирать с помощью foreach
 

Фанат

oncle terrible
Команда форума
Теперь хочу спросить общество, может я чего опустил и сделал по-деревянному??
имена файлам надо было давать без скобок.
на кой леший тебе лишний массив сдался?
надо давать имена с циферками и перебирать $_FILES через foreach
Много было сказано и написано об upload'е. Только в основном все заканчивалось загрузкой одного единственного файла. А если больше?
надо просто немного пошевелить мозгами.
К сожалению. Среди пишущих на пхп таких попадаются единицы.
Хотя нет, вру. Не среди пишущих на пхп, а среи пишущих на форум. Тем, кто думать умеет, форум нафиг не сдался.
 
Автор оригинала: Demiurg
>Типа, userfile1, userfile2 и т.д.?
да
А как тогда универсально цикл писать, чтобы он перебирал все возможные userfile1-userfilexx или можно (и нужно!) вытягивать все от начала и до возможного конца массива?
Вот тут я пригрузился.
 

Фанат

oncle terrible
Команда форума
О, господи.
foreach($_FILES as $userfile) ЧЕМ тебя не устраивает?
$userfile у тебя - МАССИВ, тот самый ОДИН файл, с которым ты привык работать,

Об этом я и говорю!
Что работа с множеством файлов НИЧЕМ не отличается от работы с одним файлом.

И это почему-то так туго до людей доходит.
они не хотят делать ПРОСТО.
они начинают высасыватть из пальца изобретения.
 

Фанат

oncle terrible
Команда форума
Янг, исправил бы ты свой фундавментальный труд.
Я понимаю, что чем больше текстов на деталях, тем ты круче.
Но о КАЧЕСТВЕ тоже надо ИНОГДА думать.
 
Добивка : Вопрос по upload'у нескольких файлов

Автор оригинала: Фанат
foreach($_FILES as $userfile)
Дело дошло до реализации :)
Дабы пока не кидаться кодом, сначала спрошу.
Т.е. фактически при вышеупомянутом раскладе получится, что
$userfile['userfile']['tmp_name'], будет то же самое что и $_FILES['userfile']['tmp_name'] ??
 
Автор оригинала: SiMM
[m]foreach[/m]
Я и на аглицком читал, и по нашему тоже..
Ничегошеньки не могу понять..
Получается очередную переменную $_FILES массива нужно приравнивать какой-то другой переменной, с которой в последствии и работать..?
Предполагаю, что опять что-то наврал или недопонял. Нет, правда, очень туплю... не понимаю. А надо!
 

jonjonson

Guest
PHP:
foreach ($_FILES as $uploaded_file) {
        echo 'Имя файла у клиента: ' . $uploaded_file['name'] . '<BR />';
        echo 'Имя после загрузки: ' . $uploaded_file['tmp_name'] . '<BR />';
        echo 'Тип файла: ' . $uploaded_file['type'] . '<BR />';
        echo 'Размер файла: ' . $uploaded_file['size'] . '<BR />';
}
 
Сверху