我尝试使用此自定义验证器来验证所选文件的文件扩展名。
我将valdr-validation-plugin与 AngularJS 一起使用,并编写了这个自定义验证来验证要上传的文件的扩展名。通常value
参数包含要验证的数据的详细信息,但在文件上传的情况下它不起作用。
app.factory('fileValidator', function () {
return {
name: 'fileExtension',
validate: function (value, arguments)
{
if(value=== undefined) { return false; }
else
{
var fileName = value.name,
extension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
if( extension == "jpg" || extension == "jpeg" || extension == "png" || extension == "bmp" ){ return true; }
else { return false; }
}
}
};
});
在上面的代码中,我尝试使用value
参数获取文件的扩展名,但它显示value is undefined错误。
我从下面的代码中调用了这个自定义验证。将该验证器注册到应用程序配置,然后使用它来验证bannerImage。
app.config(function(valdrProvider) {
valdrProvider.addValidator('fileValidator');
valdrProvider.addConstraints({
"Banner":
{
"bannerName":
{
"size":
{
"min": 2,
"max": 512,
"message": "Banner name must between 2 and 512 characters"
},
"required" :
{
"message" : "This field is required"
}
},
"bannerLink":
{
"size":
{
"min": 2,
"max": 1024,
"message": "Banner link must between 2 and 1024 characters"
},
"required" :
{
"message" : "This field is required"
}
},
"bannerImage":
{
"fileExtension":
{
"allowedExtensions" : ['jpg','jpeg', 'png','bmp'],
"message" : "Allowed file types are JPG, JPEG, PNG, BMP"
},
"required":
{
"required" : "This field is required"
}
}
}
});
});
它不起作用并显示很多错误。我该如何解决这个问题?