2016-06-29 2 views
1

Я хотел бы спросить вас, ребята, как сохранить вывод FileReader в JavaScript для переменной или сделать функцию, где FileReader возвращает результат.Выход Filereader, сохраненный в переменной

Здесь также немного кода:

HTML

<input type='file' id='inputFile'> 
<button id='btn'>Save</button> 

JAVASCRIPT

function imgToBase64(file_input) { 
    if (file_input.files && file_input.files[0]) { 
     var fileReader = new FileReader(); 
     fileReader.onload = function (event) { 
      result = event.target.result; 
      return result // ??? 
     }; 
     fileReader.readAsDataURL(file_input.files[0]); 
    } 
} 

parameter = document.getElementById('inputFile'); 
btn = document.getElementById('btn'); 

btn.onclick = function() { 
    variable = imgToBase64(parameter); //in this variable I would like to store the result from that function 
} 

я узнал, что FileReader является асинхронным и мне нужен обратный вызов или что-л., но я не совсем понимаю, как это сделать.

Благодаря

ответ

2

Вы можете использовать AngularJS-х $q promises, чтобы получить результат. Просто убедитесь, что вы вводите $ q везде, где вы создаете функцию imgToBase64.

function imgToBase64(file_input) { 
    var deferred = $q.defer(); 
    if (file_input.files && file_input.files[0]) { 
     var fileReader = new FileReader(); 
     fileReader.onload = function (event) { 
      result = event.target.result; 
      deferred.resolve(result); 
     }; 
     fileReader.readAsDataURL(file_input.files[0]); 
    } 
    return deferred.promise; 
} 

parameter = document.getElementById('inputFile'); 
btn = document.getElementById('btn'); 

btn.onclick = function() { 
    imgToBase64(parameter).then(function (result) { 
     variable = result; 
    }); 
} 
+0

Это сработало! Большое спасибо :) – marek

+0

Привет, могу я спросить вас, есть ли у вас какие-либо идеи, как передать эту функцию 'imgToBase64()' массив входных данных, а не сохранять результат в массив результатов? Спасибо :) – marek

+0

@marek Найдите переполнение стека для ответа на него и опубликуйте его как вопрос, если вы его не увидите, я буду следить за ним. – JonK

Смежные вопросы