2013-04-14 3 views
0

хорошо, поэтому я видел много примеров и вопросов по использованию readAsDataURL(), но ни один из них, похоже, не разрешил мою проблему. Ниже приведен мой код:Как назначить значение readAsDataURL() переменной?

$(document).ready(function(){ 
    var fileReader = new FileReader(); 
    $("form").submit(function(e){ 
     e.preventDefault(); 
     console.log(fileReader.readAsDataURL(document.getElementById("userfile").files[0])); 
    }); 
}); 

Что я могу получить в консоли: undefined. Я пытаюсь получить данные в кодировке файла base64 для переменной, чтобы я мог загрузить ее с помощью ajax. Может ли кто-нибудь сказать мне, что я делаю неправильно?

ответ

6

Большинство методов экземпляра FileReader сообщают результаты асинхронно.

Вы должны связать onload событие, чтобы захватить результат:

var fileReader = new FileReader(); 
fileReader.onload = function(event) { 
    console.log(event.target.result); 
}; 
fileReader.readAsDataURL(document.getElementById("userfile").files[0]); 
+0

этот код совместим с IE9 – PRASANTH

+1

@PRASANTH Нет, см https://developer.mozilla.org/en-US/docs/ Web/API/FileReader # Browser_compatibility. Если вы хотите использовать такой API для IE9-, попробуйте полиполк, например. этот: https://github.com/Jahdrien/FileReader –

+0

Я благодарю вас за ответ и сообщит вам, если он окажется продуктивным – PRASANTH

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