Angularjs $ http und Fortschrittsbalken
Muss ich Datei hochladen und ich benutze $http (dieser code ist von meinem .service () - Funktion):
sendFile: function (params) {
return $http({method : 'post',
url : 'http://XXXXXXXXXXXXX/rest/file.json',
headers : { 'X-CSRF-Token' : $cookies['csrftoken']},
data : params
})
},
Nun, für wenig-Datei und eine gute Linie, es ist kein problem, aber mit einer großen Datei und/oder eine schlechte/langsame Linie, es ist ein problem der Benutzeroberfläche: der Nutzer kann nicht wissen, wenn der upload zu Ende. Ich brauche einen Fortschrittsbalken.
So, ich habe die Suche im internet, aber ich habe keine Lösung gefunden. Gibt es eine Möglichkeit zu bekommen, einige Fortschritte/Benachrichtigung von $http ?
Habe ich versucht diesen code ohne Glück:
ProfileService.sendFile(data)
.then(function(ret) {
var uri = ret.data.uri;
scope.content = "Upload finished";
scope.postForm.fid = ret.data.fid;
scope.postForm.buttonDisabled = false;
},
function(error) {
scope.postForm.showError = true;
scope.postForm.errorMsg = error.data;
},
function(progress) {
console.log("inside progress");
console.log(progress)
}
);
"progress" - Funktion wird nie aufgerufen.
Ich bin mit angular 1.2.x
Dank.
InformationsquelleAutor der Frage ZioBudda | 2014-04-21
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Winkel-Laden-Bar. Es arbeitet automatisch für
$http
Anforderungen und benötigt keine Installation außer hinzufügen als app-Abhängigkeit.InformationsquelleAutor der Antwort Muhammad Reda
Ich würde empfehlen, ng-Fortschritt. Diese verarbeitet mehrere Anfragen und im Grunde zeigt eine nette kleine progress-bar für alle http-Aktivität.
http://victorbjelkholm.github.io/ngProgress/
InformationsquelleAutor der Antwort mithun_daa
Können Sie dies lösen, indem Sie versteckt/zeigt ein loadingbar. Starten Sie die Anzeige der loadingbar sobald der upload beginnt, und entfernen Sie die loadingbar wenn der upload fertig ist (in der Erfolgs-handler aus der $http-request).
Habe ich eine einfache jsfiddle für Sie, um Ihnen an einem Beispiel zeigen.
Ich bin mit
$timeout
zu simulieren$http
Anfrage.Html-markup:
Js-Controller:
Für eine demonstration, wie das funktioniert, sehen Sie diese Geige.
Update
Durch Aufklärung in den Kommentaren, Sie wollen in der Lage sein, die Fortschritte der upload-Prozentsatz. zB. Wie viele % bis der upload fertig ist
Sollten Sie sich das SO ein postwo dies schon besprochen wurde.
Aus der akzeptierten Antwort:
InformationsquelleAutor der Antwort aludvigsen
Können Sie einfach die Event-Handler der $http-service
wie:
Api ist ein service, um eine Verbindung mit der server-api.
$data ist das file-Objekt aus dem input
InformationsquelleAutor der Antwort german meza
Wenn Sie nicht schreiben wollen zeigen, verstecken sich in jeder einzelnen http-Methode, dann können wir ein einfaches erstellen der Richtlinie mithilfe
$http.pendingRequests.length
und-und das ist es.Wann immer wir haben jede http-Anfrage in Bearbeitung, es wird zeigen, automatisch.
- UND HTML -
Für mehr Details siehe das
InformationsquelleAutor der Antwort Ali Adravi