diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 431c7ce..e74b196 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -818,8 +818,7 @@
                 return deferred.promise;
               },
               uploadImage: function(file){
-                var deferred = $q.defer();
-                $http({
+                return $http({
                   method: 'POST',
                   timeout: 5 * 60 * 1000,
                   url: DataService.getHost() + "/upload/image",
@@ -829,15 +828,8 @@
                   withCredentials: true,
                   data: file
                 }).then(function(response){
-                      var json = JSON.stringify(response.data);
-                      var content = JSON.parse(json);
-                      deferred.resolve(content);
-                }, function(error){
-                  console.log(error);
-                  deferred.reject(error);
+                  return response.data;
                 });
-
-                return deferred.promise;
               },
               downloadImage: function(host, filename){
                 return $http({
diff --git a/app/configuration/controllers/firmware-controller.js b/app/configuration/controllers/firmware-controller.js
index 50cff28..d209a5a 100644
--- a/app/configuration/controllers/firmware-controller.js
+++ b/app/configuration/controllers/firmware-controller.js
@@ -148,22 +148,21 @@
                     }
 
                     $scope.upload = function(){
-                        if($scope.file) {
-                            $scope.uploading = true;
-                            APIUtils.uploadImage($scope.file).then(function(response){
-                                $scope.uploading = false;
-                                if(response.status == 'error'){
-                                    $scope.displayError({
-                                        modal_title: response.data.description,
-                                        title: response.data.description,
-                                        desc: response.data.exception,
-                                        type: 'Error'
-                                    });
-                                }else{
-                                    $scope.loadFirmwares();
-                                }
-                            });
-                        }
+                      if($scope.file) {
+                        $scope.uploading = true;
+                        APIUtils.uploadImage($scope.file).then(function(response){
+                          $scope.uploading = false;
+                          $scope.loadFirmwares();
+                        }, function(error){
+                          $scope.uploading = false;
+                          $scope.displayError({
+                            modal_title: 'Error during image upload',
+                            title: 'Error during image upload',
+                            desc: 'Error uploading image',
+                            type: 'Error uploading image, please check the image'
+                          });
+                        });
+                      }
                     }
 
                     $scope.download = function(){
