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">. И все будет загружено.