AngularJS承诺不使用FileReader解析文件

时间:2014-09-12 15:24:29

标签: javascript angularjs promise

我正在尝试在我的服务中编写一个非常简单的函数,它将创建一个FileReader,读取我发送它的小图像文件并将此结果返回给我的控制器。文件到我的服务就好了。它到达我的控制器并只记录一个空白行。我假设我在某种程度上弄乱了这个承诺部分。那里我哪里错了?

服务功能 -

this.fileRead  = function(file) {
    var deferred = $q.defer();

    var reader = new FileReader();
    reader.readAsDataURL(file);

    deferred.resolve(reader.result);

    return deferred.promise;
};

控制器功能 -

$scope.onFileSelect = function($files) {
     MyService.fileRead($files[0])
                  .then(function(result) {
                    console.log(result);
                 });
};

1 个答案:

答案 0 :(得分:8)

您没有onload事件,因此它实际上不会返回读取文件数据。

this.fileRead  = function(file) {
    var deferred = $q.defer();

    var reader = new FileReader();

    reader.onload = function() {
        deferred.resolve(reader.result);
    };

    reader.readAsDataURL(file);

    return deferred.promise;
};