имеется класическая читалка файлов Код (Javascript): function handleFileSelect(evt) { var files = evt.target.files; // FileList object if (!files) { return; } // files is a FileList of File objects. List some properties. var output = []; var f; var filename; for (var i = 0; f = files[i]; i++) { filename = encodeURI(f.name); alert (filename); output.push('<li><strong>', encodeURI(f.name), '</strong> (', f.type || 'n/a', ') - ', f.size, ' Байт(ов), последнее изменение: ', f.lastModifiedDate.toLocaleDateString(), '</li>'); var reader = new FileReader(); //alert (filename); reader.onload = function (e) { var header = ";base64,"; var fileData = e.target.result; alert (filename); //alert(fileData.substr(fileData.indexOf(header) + header.length)); var curr_file = $('div[id^="Files"]:last').prop("id"); add_file(); $('#'+curr_file+' div[id="file-content"]').text( fileData.substr(fileData.indexOf(header) + header.length)); $('#'+curr_file+' div[id="file-name"]').text(filename); } reader.readAsDataURL(f); } document.getElementById('list').innerHTML = '<ul>' + output.join('') + '</ul>'; } document.getElementById('files').addEventListener('change', handleFileSelect, false); как в этом куске ( она асинхронная) Код (Javascript): reader.onload = function (e) { var header = ";base64,"; var fileData = e.target.result; alert (filename); //alert(fileData.substr(fileData.indexOf(header) + header.length)); var curr_file = $('div[id^="Files"]:last').prop("id"); add_file(); $('#'+curr_file+' div[id="file-content"]').text( fileData.substr(fileData.indexOf(header) + header.length)); $('#'+curr_file+' div[id="file-name"]').text(filename); } поиметь любую переменную с внешнего мира - например имя файла я пробовал изменять входные параметры функции.. но ничего не выходит - мне надо задать или номер файла .. или имя - да хоть чтонить - как идентифицировать это чудо
никто занимался таким ? я все еще ломаю башку - даже в нете ниче путем нету - есть функция - но она работает по 1 файлу .. у меня же несколько и тут она не пашет =( выдает тупо толи первый толи последний файл - ну что последнее было в переменной то она и отдает скорей всего.. че за бред то такой - читать файл можно .. а шагнуть в право в лево нельзя.. или можно но я не понимаю как - даже обертка then тут ничего не даст - входных параметров нету
УРААААА нашел решение в инете - спасибо умным людям Код (Javascript): var reader = new FileReader(); reader.onload = (function(theFile){ var fileName = theFile.name; return function(e){ console.log(fileName); console.log(e.target.result); }; })(currFile); reader.readAsText(currFile); когданить мои мозги начнут мыслить в ассинхроне .. не не сегодня =)
попробую расказать FileReader по функционалу - имеет только 1 входной параметр - путь к файлу и онфункция загрузки файлов работает в ассинхронном режиме в итоге если делаешь загрузку файлов им - то необходимо как то идентифицировать файл - ну имя дать ... а как это сделать когда файлы грузятся не потому порядку какой заложил а кто быстрее тот и загрузился.
в моем случае до сервера дело не доходит - чистый html + javascript а зачадчка простая - подписать с помошью web криптоарма файл =) а это делается на клиенте..