2017-05-28 1 views
0

Ceci est un violon déjà fait pour plusieurs fichiers dans une demande Fiddle. Maintenant, je veux avoir une validation dans laquelle aucun fichier ne doit être supérieur à 1MB. Comment puis-je faire ceci ? Comment puis-je par erreur sur chaque fichier. ?NgfileUpload - Comment appliquer une validation à chaque fichier en les envoyant tous en une seule demande

+1

strictement d'un point de vue de l'utilisateur, ils ne seront pas comme être bloqué par votre site ainsi. Si ma mère est bloquée par un message disant "Images max 1MB", elle n'a aucune idée de ce qu'est un MB, et encore moins de son poids. Donc, elle n'aura pas d'autre choix que de quitter votre site. Vous devriez gérer cela en redimensionnant silencieusement l'image, soit côté client (toile) ou côté serveur. –

+0

Je crois qu'il y a une propriété 'size' sur chaque objet' File' téléchargé. Avez-vous essayé de l'utiliser? –

Répondre

1

Vous pouvez parcourir chacun des fichiers et vérifier leur taille, puis afficher l'erreur souhaitée. Je pose simplement le message d'erreur ici mais vous pouvez faire autre chose.

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

app.controller('MyCtrl', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) { 
    $scope.uploadFiles = function (files) { 
     $scope.files = files; 
     if (files && files.length) { 
      if (!files.every(function(file) { 
       return file.size < 1; 
      })) { 
       return $scope.errorMsg = 'File size too big'; 
      }; 
      Upload.upload({ 
       url: 'https://angular-file-upload-cors-srv.appspot.com/upload', 
       data: { 
        files: files 
       } 
      }).then(function (response) { 
       $timeout(function() { 
        $scope.result = response.data; 
       }); 
      }, function (response) { 
       if (response.status > 0) { 
        $scope.errorMsg = response.status + ': ' + response.data; 
       } 
      }, function (evt) { 
       $scope.progress = 
        Math.min(100, parseInt(100.0 * evt.loaded/evt.total)); 
      }); 
     } 
    }; 
}]); 

http://jsfiddle.net/huhjo9jm/756/