Доброго времени суток дорогие форумчане. Код (PHP): <input type="file" id="attach_foto_input" class="attach_foto_input" multiple accept="image/*" /> <div class="attach attach_foto">+ фото</div> <div class="preview_foto_new_news" id="preview_foto_new_news"></div> Код (Text): var photo_limit = 5; function response_preload_images_news(id){ if(window.frames[id].document.body.innerHTML.indexOf("ok;")!=-1){ var r = window.frames[id].document.body.innerHTML; //бла бла бла } } $("attach_foto_input").addEventListener("change",function(){ files = this.files; if(files.length>photo_limit){ fixed_msg("Можно приложить не более пяти фотографий","error"); return false; } for(var i = 0;i<files.length;i++){ if(files[i].type.indexOf("image/")==-1){ fixed_msg("Добавлять можно только изображения","error"); return false; } var id = Math.random(); var iframe = document.createElement("iframe"); iframe.name = "new_news_iframe"+id; iframe.id = "new_news_iframe"+id; iframe.onload = function(){ response_preload_images_news(this.id); } var form = document.createElement("form" ); form.action = base_url+"php/preload_images_news.php"; form.method = "POST"; form.id = "new_news_form"+id; form.target = "new_news_iframe"+id; form.enctype= "multipart/form-data"; var input = document.createElement("input" ); input.type = "file"; input.id = "attach_foto_input"+id; input.file = files[i]; // input.filename = files[i].name; // input.file.name = files[i].name; input.name = "photo"; var hidden = document.createElement("input" ); hidden.type = "hidden"; hidden.name = "key"; hidden.value= key; var preview= document.createElement("div"); preview.className = "img"; preview.id = "preview_foto_new_news_img"+id; preview.style.textAlign = "center"; var img = document.createElement("img"); img.src = base_url+"img/ajax-loader.gif"; img.style.width = "31px"; img.style.padding = "20px 0"; $("new_news").appendChild(iframe); $("new_news").appendChild(form); form.appendChild(input); form.appendChild(hidden); $("preview_foto_new_news").appendChild(preview); preview.appendChild(img); photo_limit--; form.submit(); } },false); Комментарии по коду, думаю, не нужны =) Суть в том, что при выборе файлов JS должен создать для каждого свой фрейм, форму и инпут с файликом. Но беда в том, что при отправке такой формы, файлик не отправляется, хотя (как я проверял в консоле браузера) файлик таки записывается. Гугл ничего толкового не дал =( С уважением Евгений.
Чем код отдельный отличается от нужного? Тут проблема не во "встраивании" кода, а с тем, что код не работает. И не важно где этот код писать. Он везде работать не будет =) Тут вопрос в том, как инпуту отдать файлик из другого инпута. Если смотрел на сайте через консольку, заметил бы, что в инпут поступает нечто типа картинки со всеми доступными свойствами, но вот при отправке такого инпута, картинка не отправляется =(
В первом multiple стоит. По условию можно прикрепить до пяти изображений, но грузиться они все должны по одному
Думаю flash можно подключить и там такое сделать, почему так важно чтобы они по очереди грузились, а не асинхронно? Думаю что я не прав, похоже такое как тебе нужно реализовали в https://blueimp.github.io/jQuery-File-Upload/ посмотри код и так ли это.
Зачем флэш, когда можно на родном JS? Важно от того, что изображения могут быть большими по размеру, а время выполнения скрипта на сервере ограничено и ограничение снять нельзя
Я читал про него, но это не совсем то, что мне нужно. Штука полезная, не спорю, но мне в данном случае нужно сразу после выбора файлов грузить их на сервер. По одному. Штурмую яндекс уже который раз, но толку почти ноль =( Если знаешь способ (на JS), буду не против подсказки. Конкретно сейчас копаю по теме загрузки файлов на AJAX, но там не совсем понимаю
В исходном коде, том что выше, заменил строку input.file = files; на input.files = files; и все заработало. НО! беда в том, что теперь в каждый инпут кидается весь исходный инпут (со всеми файлами) и если пользователь выбирает 5 картинок, то на сервер все эти картинки отправляются по 5 раз. input.files = files; такой подход снова не дает результатов. delete files; и метод splice совершенно не имеют никакого влияния на массив файлов. Как заставить в инпут записываться только по одному файлу? или при отправлении не все отправлять, а лишь нужны один??
я уже не могу без слёз мимо этого треда проходить... на тебе пару идей: 1. можно сделать один инпут с мультифайлом и отправить пачку файлов. (HTTP) 2. можно сделать несколько инпутов с синглфайлом и динамически добавлять еще и еще инпуты по нажатию на элемент интерфейса. (HTTP+JS). 3. можно сделать один инпут с мультифайлом и никуда его не отправлять а вместо этого читать выбранные файлы в память показывать превьюшки блекджек и шлюх а по отправке формы слить содержимое файлов аяксом (АЯКС) или через скрытые поля (ХТТП). (HTTP+JS / AJAX)
ты внимательно читал? Есть один инпут с мультифайлом. Юзер выбирает от одного до пяти файлов и все файлики нужно "незаметно" кинуть на сервер, НО!!! по одной шутке! и до того как юзер нажмет "отправить". Выше я писал, что можно (получилось) такое реализовать с отправление ВСЕХ файлов разом... Как теперь модифицировать код, чтоб было ПЯТЬ запросов по ОДНОМУ файлу ?? =)
это третий вариант. форма с не-важно-сколькими-полями-выбора-не-важно-скольких-файлов. безопасность запрещает общаться с файловой системой пользователя пока он не протыкал файлы. когда протыкал - они в полном распоряжении браузера. а дальше ты уже что хочешь с ними то и делаешь от имени браузера. можно и на сервер отправить. только зачем их отправлять на сервер до того как пользователь их отправит на сервер?
А нельзя просто из мультифайла перетаскать файлы по одному в другие инпуты, по идее ведь пользователь уже слил их браузеру. Из одного инпута получается кинуть в другой, но они ВСЕ копируются. поподробнее куда копать?
вот я даже и не знаю что тебе ответить на этот вопрос. у тебя видимо знаний ноль или около того. джаваскрипт умеет со страницей взаимодействовать? да. с формами на странице? да. с файлами в инпутах? да. с сервером? да. копать тебе в сторону того как это сочетать. алгоритм.
хреньли он тогда не разделяет мои инпуты? И тут хоть аякс хоть скрытые поля... JS не видит файлы ПО ОТДЕЛЬНОСТИ!!!
сарказм про точку произростания рук покажи мне два листинга: 1. форма с инпутами 2. обработчик формы Добавлено спустя 1 минуту 27 секунд: js-обработчик формы. на сторону сервера нам еще рано смотреть.
Там написано, что делать)) Добавлено спустя 42 секунды: Это тоже небольшой баг, связанный с подменой урла при открытии новостей. Позже буду решать эту проблему Добавлено спустя 5 минут 4 секунды: А еще вопрос к челу, который вводил такие логины: Код (Text): date:2015-03-19 12:04:17; error:noUser; name:<script>alert(\'Yo\')</script>; pass:123; ip:91.204.180.139; --- date:2015-03-19 12:05:06; error:noUser; name:?>JOIN DELETE FROM users WHERE 1; pass:123; ip:91.204.180.139; --- date:2015-03-19 12:06:59; error:noUser; name:\' -- JOIN DELETE FROM users WHERE 1; pass:123; ip:91.204.180.139; --- date:2015-03-19 12:07:10; error:noUser; name:\' -- UNION DELETE FROM users WHERE 1; pass:123; ip:91.204.180.139; --- date:2015-03-19 12:08:36; error:noUser; name:\' UNION SELECT 1,2,3; pass:123; ip:91.204.180.139; У тебя что-нибудь вышло? =) (хочу знать для безопасности)
Таки делал, не помогает.. Добавлено спустя 2 минуты 4 секунды: я вводил только manta 123 А что, ты пасс хранишь в открытом виде?