diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index 30784528700f7b001111d9d2efa089b34c9dac1e..8fec7d5c04e70f7ed2e09ea403370b263a7d557d 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -1071,6 +1071,7 @@ OC.Uploader.prototype = _.extend({
 
 					self.clear();
 					self._hideProgressBar();
+					self.trigger('stop', e, data);
 				});
 				fileupload.on('fileuploadfail', function(e, data) {
 					self.log('progress handle fileuploadfail', e, data);
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index bf4fd75d4cce15c6a2a4182d108be7c29042d632..18534db3ee9b08460cf71fe68e9dcb4ef053c482 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -2810,8 +2810,8 @@
 				$.when.apply($, promises).then(function() {
 					// highlight uploaded files
 					self.highlightFiles(fileNames);
+					self.updateStorageStatistics();
 				});
-				self.updateStorageStatistics();
 
 				var uploadText = self.$fileList.find('tr .uploadtext');
 				self.showFileBusyState(uploadText.closest('tr'), false);
diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js
index 3b0e0b83b8205e235e6c8f914a5ea9951dc2a163..15dab3b98826559f8c95d9fa7391ee669ae42bee 100644
--- a/apps/files/tests/js/filelistSpec.js
+++ b/apps/files/tests/js/filelistSpec.js
@@ -2794,13 +2794,22 @@ describe('OCA.Files.FileList tests', function() {
 
 				highlightStub.restore();
 			});
-			it('queries storage stats', function() {
+			it('queries storage stats after all fetches are done', function() {
 				var statStub = sinon.stub(fileList, 'updateStorageStatistics');
-				addFile(createUpload('upload.txt', '/subdir'));
-				expect(statStub.notCalled).toEqual(true);
+				var highlightStub = sinon.stub(fileList, 'highlightFiles');
+				var def1 = addFile(createUpload('upload.txt', '/subdir'));
+				var def2 = addFile(createUpload('upload2.txt', '/subdir'));
+				var def3 = addFile(createUpload('upload3.txt', '/another'));
 				uploader.trigger('stop', {});
+
+				expect(statStub.notCalled).toEqual(true);
+				def1.resolve();
+				expect(statStub.notCalled).toEqual(true);
+				def2.resolve();
+				def3.resolve();
 				expect(statStub.calledOnce).toEqual(true);
-				statStub.restore();
+
+				highlightStub.restore();
 			});
 		});
 	});