diff --git a/static/js/directives/ui/dockerfile-build-dialog.js b/static/js/directives/ui/dockerfile-build-dialog.js index 524f0bacd..fb6408914 100644 --- a/static/js/directives/ui/dockerfile-build-dialog.js +++ b/static/js/directives/ui/dockerfile-build-dialog.js @@ -52,6 +52,7 @@ angular.module('quay').directive('dockerfileBuildDialog', function () { if (sn && $scope.repository) { $scope.viewTriggers = false; $scope.startTrigger = null; + $scope.errorMessage = null; $element.find('.dockerfilebuildModal').modal({}); diff --git a/static/js/directives/ui/dockerfile-build-form.js b/static/js/directives/ui/dockerfile-build-form.js index 6d35474a9..28d1a26ed 100644 --- a/static/js/directives/ui/dockerfile-build-form.js +++ b/static/js/directives/ui/dockerfile-build-form.js @@ -196,21 +196,36 @@ angular.module('quay').directive('dockerfileBuildForm', function () { } }); }; + request.onerror = function() { $scope.$apply(function() { handleUploadFailed(); }); }; + request.onreadystatechange = function() { var state = request.readyState; + var status = request.status; + if (state == 4) { - $scope.$apply(function() { - startBuild(fileId); - $scope.uploading = false; - }); - return; + if (Math.floor(status / 100) == 2) { + $scope.$apply(function() { + startBuild(fileId); + $scope.uploading = false; + }); + } else { + var message = request.statusText; + if (status == 413) { + message = 'Selected file too large to upload'; + } + + $scope.$apply(function() { + handleUploadFailed(message); + }); + } } }; + request.send(file); };