Закачка нескольких файлов через POST

litvinenko

Новичок
Закачка нескольких файлов через POST

Люди добрые. Я понимаю, что тема уже довольно избита, но по поиску решение моей проблемы не нашел.
Суть проблемы:
нужно на сервак закочать несколько каритнок. поля типа file добавляются при помощи яваскрипта.
вот кусок кода
PHP:
<script language="javascript">
function AddItem() {
  div=document.getElementById("items");
  button=document.getElementById("add");
  newitem="<input type=\"file\" name=\"userfile[]\" size=\"45\"><br>";
  newnode=document.createElement("span");
  newnode.innerHTML=newitem;
  div.insertBefore(newnode,button);
}
</script>
<table align="center" width="60%" cellspacing="0" cellpadding="0">
<form method="POST" action="jj.php" enctype="multipart/form-data">
<tr><td class="newscontent">Автор*:         <input type="text" name="Aughtor"></td><td width="22%"></td><td width="44%">&nbsp;</td></tr>
<tr><td class="newscontent">Текст сообщения*:</td></tr>
<tr><td class="newscontent" colspan="3"><textarea name="msg" rows="10" cols="80"></textarea></td></tr>
<tr><td class="newscontent">Прикрепленные&nbsp;изображения:</td></tr>
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
<tr><td class="newscontent">
<div ID="items">
<input type="file" name="userfile[]" size="45"><br>
<input type="button" value="Добавить поле" onClick="AddItem();" ID="add">
</div>
</td></tr>
<tr><td class="newscontent">* - поля, обязательные для заполнения</td></tr>
<tr><td class="newscontent">
<input type="hidden" name="hVar" value="1">
<input type="submit" value="Добавить запись"></td></tr>
</form>
</table>
в файле jj.php пишу
PHP:
var_dump($_FILES);
но почему-то передается только первое изображение.
в чем дело, подскажите?
 

eps

Новичок
Ничего, что поле input каждый раз называется "userfile[]" ?
Вобще в файле jj.php напиши php_info(); и посмотри, что туда передается.
 

SiMM

Новичок
> Ничего, что поле input каждый раз называется "userfile[]" ?
Ничего, хоть на мой взгляд и не столь удобно. Кстати, в IE работает.
 

litvinenko

Новичок
передается так же один файл.
я так понял, что вся проблема в том, что имя поля везде userfile[]
а как тогда все имена переданных файлов можно загнать в массив, если я заранее не знаю, сколько будет передано файлов?
 

litvinenko

Новичок
не-а не помогает i++
как я сейчая заметил, HTML код не изменяется при добавлении новых полей, т.е. визуально поле добавляется, но в фору не добавляется.
 

SiMM

Новичок
> я так понял, что вся проблема в том, что имя поля везде userfile[]
Нет, не в этом.
Повторяю ещё раз - в IE 6.0.2900.2180 всё работает.

> как я сейчая заметил, HTML код не изменяется при добавлении новых полей
Интересно, как ты это заметил и почему он должен изменяться?
 

SiMM

Новичок
denver, уймись уже, пока тебе в этом не помогли. Считай это предупреждением.
 

litvinenko

Новичок
SiMM.
прогнал :) я уже просто не знаю, что думать.
нужно, чтобы работало везде.

-~{}~ 06.07.06 11:08:

в общем я вроди как выяснил, почему так происходит, но не знаю как исправить.
дело в том, что если поля не добавлять динамически - то все нормально работает.
скорее всего тему надо переносить в раздел с яваскриптом уже :)
на счет броузеров: как я узнал, Opera вообще глючная на счет DHTML
 

SiMM

Новичок
> на счет броузеров: как я узнал, Opera вообще глючная на счет DHTML
Вот с этого и надо было начинать. В опере у меня тоже не завелось.
Тему переношу.
 

SmokyPython

Новичок
Нужно местами поменять теги <form> и <table>, у меня заработало после этого
 

litvinenko

Новичок
SmokyPython.
Спасибо, действительно все заработало.
А не объяснишь, почему такое строгое следование должно быть?
 

thujone

Новичок
litvinenko

Для <table> дочерними элементами могут являтся <caption> <thead> <tbody> <tfoot> и <tr>. Поэтому с <form> в некоторых броузерах может работать некорректно
 

litvinenko

Новичок
Всем спасибо. Проблема решена после замены местами <form> и <table>
 

SmokyPython

Новичок
litvinenko
для проверки HTML кода можно использовать в опере Сtrl+Alt+V, //SmokyPython развернул плакат "опера рулит"
или в FireFox расширение "HTML Validator"
 

Flanker

незнайка
Спасибо. Воопще очень классный и нужный скрипт. Мне он ригодился.
Я обычно тоже так создаю элементы форм но не всегда работает. Я ввел специальную переменную которая отвечала за количество то есть я указывал в имени определеную ячейку массива.
Если можешь подскажи как подсчитать количество элементов форм с одинаковым id если єто возможно.
 

litvinenko

Новичок
средствами php просто использую функцию
PHP:
$count = count($userfile);
что-то подобное длолжно быть и в JavaScripte.
 
Сверху