2017-05-28 6 views
0

Dies ist eine bereits erstellte Fiddle für mehrere Dateien in einer Anfrage Fiddle. Jetzt möchte ich eine Validierung haben, in der keine Datei größer als 1MB sein sollte. Wie kann ich das machen ? Wie kann ich durch Fehler bei jeder Datei gehen. ?NgfileUpload - So wenden Sie die Validierung einer Datei an, während Sie alle in einer Anfrage senden

+1

Streng von einem Benutzer Sicht, werden sie von Ihrer Website auf diese Weise nicht blockiert mag wird. Wenn meine Mutter von einer Nachricht "Images max 1MB" blockiert wird, hat sie keine Ahnung, was ein MB ist, geschweige denn ein Bildgewicht reduzieren. Sie wird also keine andere Wahl haben als Ihre Website zu verlassen. Sie sollten damit umgehen, indem Sie das Image entweder clientseitig (Canvas) oder serverseitig skalieren. –

+0

Ich glaube, es gibt eine 'size' Eigenschaft für jedes hochgeladene' File' Objekt. Hast du es versucht? –

Antwort

1

Sie können durch jede der Dateien iterieren und deren Größe überprüfen und dann den von Ihnen gewünschten Fehler anzeigen. Ich habe hier einfach die Fehlermeldung gesetzt, aber Sie können etwas anderes tun.

//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/

Verwandte Themen