2014-05-09 9 views
5

Ich verwende diese Angular File Upload Bibliothek für meinen Upload-Prozess.Angular File Upload-Warteschlange

Es hochgeladen perfekt in Ordnung mit dem gleichen Setup, das in diesem Repo aufgeführt ist.

Allerdings muss ich die Dateien in eine Warteschlange hochladen (1 Datei nach der anderen), im Gegensatz zu allen Dateien, die zur gleichen Zeit hochgeladen werden.

Example.

Das Beispiel verwendet einen Gabel Repo und die Voraussetzung ist, dass ich den einen verwende, den ich aufgeführt habe.

Andere Optionen wie Pause/Abbrechen werden ebenfalls benötigt.

Aktuelle Einstellung:

Controller: 

$scope.onFileSelect = function($files) { 
    for (var i = 0; i < $files.length; i++) { 
    //loop through files and put in an array 
    } 
    //execute upload function 
    $scope.start(files); 
    } 
} 
}; 

$scope.start = function(index) { 
    $upload.upload({ 
    //upload clode 
    }).progress(function(evt) { 
    //Progress calculation 
    }).success(function(data, status, headers, config) { 
    //Success return 
    }).error(function(data, status, headers, config) { 
    console.log(data); 
    }); 
}; 
+0

Sie können die rekursive Funktion verwenden, und die rekursive Funktion sollte aufrufen, sobald Sie alle Bedingungen erfüllt haben. –

Antwort

1

dies versucht, im Grunde ist es sendet nur eine Datei zu einem Zeitpunkt, bis getan. Sie könnten $ timeout verwenden, wenn Sie eine Verzögerung zwischen dem Senden jeder Datei bevorzugen würden:

$scope.onFileSelect = function($files) { 
    $scope.uploadList = $files; 
    $scope.uploadIndex = 0; 
    $scope.start(uploadIndex) 
}; 

$scope.start = function() { 
    $upload.upload({ 
    //upload code, send file 
    // Send file $scope.uploadList[$scope.uploadIndex]; 
    }).progress(function(evt) { 
    //Progress calculation 
    }).success(function(data, status, headers, config) { 
    //Success return 
    $scope.uploadIndex++; 
    // Send the next file by calling ourselves 
    if (uploadIndex < uploadList.length) 
     $scope.start(); // Send the next one now - could be deferred a little by using $timeout 
    }).error(function(data, status, headers, config) { 
     console.log(data); 
    }); 
}; 
0

Für jetzt sollten Sie Ihre Warteschlange selbst verwalten. Sie können neue Uploads bei den letzten Uploads starten.