NgfileUpload - 如何在一个请求中发送所有文件时对每个文件应用验证
NgfileUpload - How to apply validation one each file while sending them all in one request
这是一个已经完成的 fiddle 一个请求 Fiddle 中的多个文件。现在我想进行验证,其中任何文件都不应大于 1MB
。我怎样才能做到这一点 ?我怎样才能通过每个文件的错误。 ?
您可以遍历每个文件并检查它们的大小,然后显示您想要的任何错误。我只是在这里设置了错误消息,但你可以做其他事情。
//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));
});
}
};
}]);
这是一个已经完成的 fiddle 一个请求 Fiddle 中的多个文件。现在我想进行验证,其中任何文件都不应大于 1MB
。我怎样才能做到这一点 ?我怎样才能通过每个文件的错误。 ?
您可以遍历每个文件并检查它们的大小,然后显示您想要的任何错误。我只是在这里设置了错误消息,但你可以做其他事情。
//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));
});
}
};
}]);