このカスタムバリデーターを試して、選択したファイルのファイル拡張子を検証しました。
私はAngularJS でvaldr-validation-pluginを使用し、アップロードするファイルの拡張子を検証するためにこのカスタム検証を作成しました。通常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
であるというエラーが表示されます。
以下のコードから、このカスタム検証を呼び出します。そのバリデーターをアプリ構成に登録し、それを使用して 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"
}
}
}
});
});
機能せず、多くのエラーが表示されます。この問題を解決するにはどうすればよいですか?