2016-04-11 5 views
1

So einige Daten mit einem $ http.post in Ich schicke Winkel wieZeige Prozent der Upload von api Winkel

$http.post('/api/FileBrowser/UploadedFiles/', 
           JSON.stringify(dummyobj), 
           { 
            headers: { 
             'Content-Type': 'application/json' 
            } 
           } 
         ).success(function (data2) { 

          }).error(function (data, status, headers, config) { 

          }); 

So, jetzt will ich versuchen und zeigen, wie viele Prozent der Upload erfolgt, Ich kenne die Größe des Uploads nach dem Anruf. also würde ich gerne etwas wie eine Callback-Methode finden, die zurückgibt, wie viele Bytes senden.

Dies sollte machbar sein, da ein Browser dies anzeigen kann. Wie kann man das machen? Dank

+2

@ danday74 Antwort ist gut. Andernfalls, wenn Sie $ http verwenden, das Versprechen zurückgibt, können Sie eine .then-Funktion verwenden, in der Sie 3 Callback definieren können: Erfolg/Fehler/und das letzte, wo Sie das tun können. – Walfrat

+0

In der Tat @ danday74 bekam eine gute Antwort, aber ich suchte nach einer Möglichkeit, es mit meiner Code-Basis wie gezeigt zu tun. Worüber du sprichst, klingt nach dem, wonach ich suche. Ich habe mich nach dem letzten Rückruf des http-Versprechens umgesehen. aber kann keine Informationen darüber finden. würdest du es ein wenig mehr beschreiben? – DaCh

+0

https://docs.angularjs.org/api/ng/service/$q Kapitel "Die Promise API": dann (successCallback, errorCallback, notifyCallback). Ich weiß nicht, ob $ http es verwendet, um Sie über den Fortschritt zu informieren – Walfrat

Antwort

2

Verwendung ng-Datei-Upload

ich es vor der Produktion für große Unternehmen verwendet haben - hervorragend - sehr gut, wenn sie in conjuntion mit ui.bootstrap verwendet Fortschrittsbalken

https://github.com/danialfarid/ng-file-upload

https://angular-ui.github.io/bootstrap/#/progressbar

beide sind auch Bibliotheken respektieren innerhalb der Angular Gemeinschaft

Code von der ng-Datei-Upload-Site

//inject directives and services. 
var app = angular.module('fileUpload', ['ngFileUpload']); 

app.controller('MyCtrl', ['$scope', 'Upload', function ($scope, Upload) { 
// upload later on form submit or something similar 
$scope.submit = function() { 
    if ($scope.form.file.$valid && $scope.file) { 
    $scope.upload($scope.file); 
    } 
}; 

// upload on file select or drop 
$scope.upload = function (file) { 
    Upload.upload({ 
     url: 'upload/url', 
     data: {file: file, 'username': $scope.username} 
    }).then(function (resp) { 
     console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data); 
    }, function (resp) { 
     console.log('Error status: ' + resp.status); 
    }, function (evt) { 
     var progressPercentage = parseInt(100.0 * evt.loaded/evt.total); 
     console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name); 
    }); 
}; 
// for multiple files: 
$scope.uploadFiles = function (files) { 
    if (files && files.length) { 
    for (var i = 0; i < files.length; i++) { 
     Upload.upload({..., data: {file: files[i]}, ...})...; 
    } 
    // or send them all together for HTML5 browsers: 
    Upload.upload({..., data: {file: files}, ...})...; 
    } 
} 
}]); 
+0

Danke für die Antwort. Ich werde mich in der Tat für eine andere Zeit daran erinnern, aber ich kann nicht ändern, warum ich den HTTP-Upload für diese Aufgabe verwende. also habe ich angst, ich brauche einen weg, um es wie ein walfrat-kommentar zu machen – DaCh

Verwandte Themen