2016-05-30 4 views
0

В настоящее время я работаю над проектом Unity Webgl, и я новичок в javascript и в Интернете.Событие FileReader API 'load'

В моем проекте пользователь должен иметь возможность добавлять изображения и видео в проигрыватель webgl, изображение отлично работает (благодаря коду gman на этом thread). Я использую его как основу для своего скрипта. Конечно, я изменил входной прием, чтобы иметь возможность получать видео (только mp4). Но у меня проблемы.

Я прочитал это tutorial и весь документ, который я нашел о файле javascript, blob и т. Д. Но я не заработал. Я считаю, что с FileReader есть что-то, чего я не понимаю, поскольку console.log на прослушивателе загрузки не вызывается, то же самое для прослушивателя «onerror», за исключением случаев, когда я нажимаю на отмену (из кода here).

 function getPic(evt) { 
    var file = document.querySelector('input[type=file]').files[0]; 
    var reader = new FileReader(); 

    reader.addEventListener("onload", function() { 
     reader.readAsDataURL(file); 
     console.log(reader.result); 
    }, false); 
    reader.addEventListener("onerror", function (error) { 
     console.log("error" + error); 
    }, false); 
    } 

Я попытался onloadend тоже, но это не работает, так как OnLoad/onloadend слушатель никогда не называется мой сценарий печати «нуль». Это хорошее начало или есть более простой способ получить видео/изображение с пользовательского компьютера?

ответ

2

FileReader.onload свойство содержит обработчик события выполняется, когда событие «нагрузка» срабатывает, когда содержание чтения (например. ReadAsDataURL) доступен

  • слушатель события должны слушать для 'load' события вместо «OnLoad "

reader.addEventListener("load", function(event) {... 
reader.onload = function() {... 

reader.readAsDataURL (файл) вызывается внутри функции обратного вызова

  • переместить линейку reader.readAsDataURL (файл); вне функции обратного вызова события 'загрузки'

reader.addEventListener("load", function(){ 
    console.log(reader.result); 
}, false); 

reader.readAsDataURL(file); 

https://jsfiddle.net/3vk4u0fr/

+0

Спасибо за быстрый ответ! Я пробовал, но он никогда не идет на прослушиватель onload. – hal9000

+0

У меня нет консольной ошибки, имя файла верное, и я просматриваю все функции без прохождения через onload. – hal9000

+1

Он отлично работает! (reader.onload = function() ...) Так что я считаю, что мне просто нужно прочитатьAsDataURL и использовать this.result. Я проверю это! – hal9000