Cordova reader.onloadend未被解雇

时间:2016-03-14 04:20:03

标签: ios cordova camera filereader

我正在使用cordova创建一个跨平台的应用程序。

我想从照片库中获取图像并在屏幕上预览并将其上传到服务器。 到目前为止,我可以将图像显示在屏幕上。

问题是reader.onloadend没有被解雇,没有任何反应。

$scope.getImage = function() {

    var options = {
        quality: 100,
        sourceType: 0     // 0:Photo Library, 1=Camera, 2=Saved Album
    };

    var onSuccess =  function(imageURI) {
        var pic = document.getElementById('addImage');
        pic.style.display = 'block';
        pic.src = imageURI;

        var reader = new FileReader();

        reader.onloadend = function(evt) {
            alert("loaded");
        };

        reader.onerror = function(error) {
            alert("error");
        };

        reader.readAsArrayBuffer(imageURI);
    };

    var onFail = function(message) {
        alert("error");
    };
    navigator.camera.getPicture(onSuccess, onFail, options);
};

我一直在努力解决这个问题2天,发现完全相同的线程phonegap filereader onloadend doesn't work但尚未解决。

有没有人有任何建议? 我感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我认为这是Angular 2中zone.js的一个问题。 解决方法是将FileReader对象包装到其自己的区域中。

const WrappedFileReader = window.FileReader
window.FileReader = function OriginalFileReader(...args) {
  WrappedFileReader.apply(this, args)
  const originalInstance = this[Zone.__symbol__('originalInstance')] // eslint-disable-line

  return originalInstance || this
}