each не может перебрать массив файлов. Плизззз
Все доброго дня! Подскажите пожалуйста умные люди. Что делаю не так?
Есть инпут с multiple. Выбираю 10 картинок например и хочу этот массив перебрать. Рядом с инпутом есть кнопка вызывающая функцию в которой уже хочу этот массив файлов хотябы в логах увидеть. Что делаю не так? Вот так пробовал <script type="text/javascript"> $(document).ready(function(){ $('#ajaxupload').click(function(){ var res = $('#file').val(); $.each(res, function(index, value){ alert('value' + value); }); }); }); </script> <input id="file" type="file" name="files[]" multiple="multiple" /> <input id="ajaxupload" type="button" value="Загрузить" /> |
Цитата:
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='http://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> $(function(){ $('#ajaxupload').click(function(){ var res = $('#file').val(); alert(typeof res); }); }); </script> </head> <body> <input id="file" type="file" name="files[]" multiple="multiple" /> <input id="ajaxupload" type="button" value="Загрузить" /> </body> </html> |
|
Цитата:
http://habrahabr.ru/post/120370/ |
laimas, :lol:
|
Что смешного, один и тот же "найти"? :)
|
Не совсем понимаю, а смысл того что мне просто string возвращает. Меня же названия интересуют:agree: Я в яваскрипте не силен. ПХП!!! можно чуть подробнее. не очень то от моего кода отличается за исключением typeof
|
Вам чего надо то, загрузить множество изображений? Как, Ajax? Ну так извольте сначала изучить предмет input multiple, чтобы знать, что это такое.
|
Цитата:
|
Цитата:
|
Цитата:
|
Сделал так, но ведь так тоже не работает
var res = []; var res = $("#file").val(); $.each(res, function (index, value){ console.log('index: ' + index, 'value: ' + value ); }); |
Цитата:
Цитата:
|
Будете издеваться или все же подскажите
|
Я еще и издеваюсь?! :lol:
Вы же представления не имеете, что значит этот multiple, поэтому и пытаетесь делать невообразимое, а изучать не хотите. А я значит издеваюсь, вот юмористы. :) |
дайте пожалуйста ссылку хорошую-подробную про мультипл
|
Так какие проблемы - набираем в своем любимом "гугле" что-то: Ajax загрузка файлов, input multiple и т.п., и ссылок будет немеряно, а вот какая вам нужна, это уж сами выбирайте, если то что вам дали, а там самый минимум, который поясняет "кухню" input multiple, вам непонятен.
|
дак разницу в input и multiple я знаю. Вопрос в прочтении принимаемой строки. Ладно. Спасибо на этом
|
Какой строки? Не получите вы имена всех выбранных файлов обращаясь к value - значение будет содержать имя последнего выбранного файла, и это строка, а не массив.
Вам давали ссылку для изучения. Коллекцию files (массив выбранных для загрузки файлов) нужно в цикле обходить, в котором можно получить и имя файла, и его размер и т.д. Чего не понятного? <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script> $(function() { $('input').change(function() { $.each(this.files, function() { alert('Name: ' + this.name + '\nType: ' + this.type + '\nSize: ' + this.size) }) }) }); </script> </head> <body> <input type="file" multiple="" /> </body> </html> |
ДА это понятно, что не получу. Меня интересует как верно массив циклом перебрать и все. В пхп я бы сделал нечто foreach($files as $item) и вывел item, а так как в яваскрипте я чайник, я и хотел спросить как именно правильно перебрать массив и все. не более того.
|
foreach($files as $item) - не получите вы так в РНР имени файла. Надо изучать то с чем работать нужно, там то собственно несколько строк и все, вы либо не читали вообще, либо не вникали и не пробовали разобраться.
|
да прочитал я вашу ссылку данную на хабр, но там не описано про цикл ничего. Я про each спрашиваю. Все остальное по шагам я уже давным давно сделал. Сейчас то мне перебрать надо элементы массива. Ну есть недопонимания
|
Разобрался. Просто подумал получше. Но интересно вот что. С циклом each почему-то не перебирались элементы, а циклом for все как на ладони. Зачем мучился с этим each. Жеееесть
|
А причем тут цикл? Вы пытаетесь пройти циклом строковое значение, а это означает, что вы не знаете из чего нужно получать имена файлов коллекции выбранных для загрузки. По ссылке и описывается что этот параметр можно получить обратившись к это коллекции файлов, и указаны свойства объекта, ОДНОГО объекта, каждого файла в коллекции! Или это не понятно?
Обходом этой коллекции в цикле, при чем не обязательно each, можно получить информацию о каждом из файлов коллекции. Как вы читаете, что там не понятно, ума не приложу. Как и а РНР - foreach($files as $item) выведу $item и вуаля.... Как бы не так. Если $files вы присвоили массив $_FILES['keyname'] (что собственно и не имеет смысла), то $item, это массив описывающий парметры загруженного файла из коллекции загруженных, но никак не имя файла. Что нужно сделать чтобы получить имя файла? Нужно получить ключ 'name' этого массива. Чем это разница от JS, где нужно знать что содержит имя файла, как и в РНР нужно знать, что имя файла содержит $_FILES['keyname']['name']? Что в РНР для получения всех имен нужен цикл, а в JS волшебным образом само получается? Наверное и ежу понятно, что тоже нужен цикл. Чтобы foreach($files as $item) и $item это имя файла, то $files, это должен быть массив имен всех загруженных файлов, иначе фиг. |
Мы с вами на разных языках. Что вы прицепились к foreach($files as $item) ???. Разумеется переборка массива. И ни что иное. Я просто как пример привел. ВЫ вообще вопрос мой читали? Я уже столько раз написал, что меня лишь интересовала переборка массива в котором по ключам содержатся инфа о фалах. Ужаасс. Вы тоже умника из себя стройте. Знаете экстраполярные парадигмы дизъюктивных межпространственных графов в теории исключений противоположных по смыслу показателей?
|
Цитата:
Да что за поколение растет, говоришь где нужно читать, нихрена не вникают, гнут свое, и при этом еще и виноватым остаешься. Вот деловые блин. ) |
Ну мое поколение уже выросло :p Я же не малолетка. Ну тупанул что-то с этой задачкой. Да уже решил. Спасибо за нравоучение:thanks:
|
Блин. а почему в Alert то попадает [object Object] ??? В логах ведь все отлично. Извините за глупые вопросы(
var inputFile = document.getElementById('file').files; for(i=0; i < inputFile.length; i++){ var res = inputFile[i]; alert(res); } |
Цитата:
Это продемонстрировано в сообщении №19 http://javascript.ru/forum/dom-windo...tml#post386076 |
так так так. ВОт минусы быть чайником в яваскрипт. Надо подумать. Мне надо обратится к fileName:blink:
|
Цитата:
|
А говорили читали, а я ведь и пример показывал.
var res = inputFile[i].name; |
не не. Ребят вы чего. Читал читал. Просто пока еще есть кое какая каша по выводу. Просто никогда ранее подобного даже близко не делал. Обычно плагины использовал., а тут решил все же написать, чтобы на будующее глупых вопросов не задавать))
|
Ура, добился того чего хотел. Блин радость то какая :dance:
$('.loadfile').change(function(){ var inputFile = document.getElementById('file').files; for(i=0; i < inputFile.length; i++){ var fileName = inputFile[i].name; if($('#files').val() == '') $('#files').val(fileName); else $('#files').val($('#files').val() + '|' + fileName); } }); |
У поля file значение value изменить нельзя, но только для чтения.
PS. А нет, во что то другое запись files |
espltd, мои 5коп... ;)
$('.loadfile').change(function(){ var inputFile = document.getElementById('file').files; var dlm=''; for(i=0; i < inputFile.length; i++){ var fileName = inputFile[i].name; $('#files').val($('#files').val() + dlm + fileName); dlm='|'; }; }); |
Часовой пояс GMT +3, время: 19:40. |