LINUX.ORG.RU

Загрузить содержимое файла в переменную

 ,


0

1

В общем сабж. Есть форма с двумя <input type=file>. Они могут быть выбраны, а могут быть и нет или выбран один из двух. Проблема в том, что файла 2 и я не могу выйти из callback сохранив данные для последующего запроса.

Что я делаю:

function loadFile(element, getData){
  var file = element.prop('files')[0];
  var reader = new FileReader();
  reader.onload = function(e){
    var data = e.target.result;
    getData(data);
  }
  reader.readAsText(file);
};
// Далее проверяю, есть ли в element класс, определяющий, что это
// поле с файлом и пытаюсь его загрузить:
if(left_code.hasClass('file')){
  loadFile(left_code, function(result){
    console.log(result);  // здесь всё загружено
});
но как мне сохранить этот result в переменную и потом сделать точно так же со вторым файлом? Можно попробовать сделать ещё один внутренний if для второго, но если не будет первого, а будет второй → получим кашу.

Пробовал варианты из гугла типа $.wait, но что-то не получается.

Первое что пришло в голову - сделать список и сохранять файлы туда.

oldstable
()
Ответ на: комментарий от anonymous

Примерно так и пробовал, обернув loadFile в when, но результата не дало.

conformist ★★★
() автор топика

Сделать не loadFile а loadFiles и даже один файл грузить как список. Сделать замыкание внутри reader.onload с индекс-инкрементом и дерганием следующего файла, а когда список пройден до конца — у тебя уже все что надо есть и делай там свои e.target.result или что там еще в отдельном цикле по готовому списку.

deep-purple ★★★★★
()
Ответ на: комментарий от conformist

Так проверяй, передали или нет, и если передали, то что передали.

deep-purple ★★★★★
()

А просто в двоичный массив нельзя?

PeKar
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.