无法使用Angular.js在数组中有序地获取文件

时间:2016-01-12 11:17:21

标签: javascript angularjs ng-file-upload

在Angular.js中使用ng-file-upload上传多个文件时遇到一个问题。我首先在下面解释我的代码。

<input type="file" class="filestyle form-control" data-size="lg" name="bannerimage" id="bannerimage"  ng-model="file" ngf-pattern="'image/*'" accept="image/*" ngf-max-size="2MB" ngf-min-height="100" ngf-resize="{width: 100, height: 100}"  custom-on-change="uploadFile" required="required" ngf-select="onFileSelect($file);"  ngf-multiple="true">
</div>
<label for="bannerimage" accesskey="B" ><span class="required">*</span> View Image</labe
<div style="padding-bottom:10px;" ng-repeat="pht in stepsModel">
<img ng-src="{{pht.image}}" border="0" name="bannerimage" style="width:70px; height:70px;" id="imgId">
</div>

我的控制器端代码如下所示。

$scope.stepsModel = [];
    $scope.allFiles=[];
    $scope.uploadFile = function(event){
        console.log('event',event.target.files);
        var files = event.target.files;
        for (var i = 0; i < files.length; i++) {
         var file = files[i];
             var reader = new FileReader();
             reader.onload = $scope.imageIsLoaded; 
             reader.readAsDataURL(file);
     }
    };
    $scope.imageIsLoaded = function(e){
    $scope.$apply(function() {
        var data={'image':e.target.result};
        $scope.stepsModel.push(data)
    });
}
$scope.submitImage=function(){
    console.log('all files',$scope.allFiles);
}
$scope.onFileSelect = function($files) {
         $scope.allFiles.push($files);

}

这里我的问题是当我检查submitImage函数中出现的控制台消息中的图像url时,它就像下面一样。

all files [Blob, null, Blob, null, Blob]
0: Blob

1: null   
2: Blob  
3: null    
4: Blob 

Objectlength: 5v

这里我只上传了3个文件,但长度显示5意味着它没有连续出现,假设第0个索引有一个文件在那里,那么下一个文件占用第2个索引。这里我需要所有文件应该串行来。请发布帮助我。

1 个答案:

答案 0 :(得分:1)

我认为首先你需要检查为什么数组中存在null元素。 在登录onFileSelect函数后,在选中每个文件后检查allFiles数组。