< input type=file > не попадают в $_FILES
Такая трабла:
Создаю < input type=file > на JS . Все чудно. Но при субмите формы поля не попадают в $_FILES (PHP) Вариант: "поля не в форме" отпадает, добавляю в DIV, а он в форме. Да и прикол такой, что в $_POST попадает, а в $_FILES нет. Уже сталкивался когдато, но както само попустило. Кто раскажет, кто подскажет что за нюанс? |
как форму объявили?
надо так: <form enctype="multipart/form-data" action="_URL_" method="post"> рискну предположить, что вы забыли enctype="multipart/form-data" |
история такая, была форма с этим примутом, суть: назначение задания с прикреплением файла, понадобилось в назначении многим юзерам сделать для каждого attachments, по сути копипаст только добавил user_id и вот. Таже история была с общим добавлением но както сама по себе решилась.:wacko:
|
Это работает:
Код:
<form name=f1 action='admin.php?id=$uid&taskid=$task_id' method=post enctype=multipart/form-data>А это попадает только в пост, кроме поля которое создал вручную Код:
foreach($arr as $v) |
Знаю что пост старый, но все же напишу всем кто будет в будущем сталкиваться с проблемой создания динамических input file и не попадания их в $_FILES в IE
Если Вы динамически создаете форму, а в ней есть поля <input type="file" name="name">, то для того чтобы IE отправил форму на сервер с файлами нужно создавать форму так:
if(IE){ //персонально для IE
var e = document.createElement('<form id="form_id" name="form_name" enctype="multipart/form-data" target="upl_frame" method="POST" action="index.php">');
document.getElementById('par').appendChild(e);
}
else { // для всех остальных
var e = document.createElement('FORM');
e.id = 'form_id';
e.name = 'form_name';
e.enctype = 'multipart/form-data';
e.action = 'index.php';
e.method = 'POST';
e.target = 'upl_frame';
document.getElementById('par').appendChild(e);
}
На этом сайте есть статья про ajax транспорт iframe там об этом почти сказано :) http://javascript.ru/ajax/transport/iframe |
Цитата:
|
Цитата:
Вот, по изучай:
var $E = Element.create = function(tagName, attributes) {
if (tagName) {
if (IE && attributes) {
if (attributes.type) tagName += ' type="' + attributes.type + '"';
if (attributes.name) tagName += ' name="' + attributes.name + '"';
if (attributes.checked) tagName += ' checked="checked"';
delete attributes.type;
delete attributes.name;
delete attributes.checked;
tagName = '<' + tagName + '>';
}
var elem = $($d.createElement(tagName)).setAttributes(attributes), i = 2, length = arguments.length;
while (i < length) {
var I = arguments[i++];
I != null && elem.appendChild(I.nodeType ? I : $d.createTextNode(I));
}
return elem;
}
throw new Error();
};
|
Цитата:
ЗЫ: ишак, как обычно, не перестаёт удивлять:) |
Riim, слух, по-моему тут чего-то не хватает:-?
Откуда взялось $d и $(). Хотя про второе я догадываюсь:) А в общем суть ясна:) |
| Часовой пояс GMT +3, время: 21:55. |