< 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, время: 12:01. |