如何使用FluentValidation验证上传的文件

4

如何使用FluentValidation验证上传的文件?

      <input type="file" asp-for="Files" multiple />


你想在服务器端检查验证吗? - Hadi Samadzad
例如文件大小/允许的扩展名... - farshid azizi
1个回答

16

你的ViewModel必须具有public IList<IFormFile> Files { get; set; }

    public class CustomViewModel
    {
        public IList<IFormFile> Files { get; set; }
        ...
    }

你必须创建一个针对 IFormFile 类型的验证器,如下所示:

    public class FileValidator : AbstractValidator<IFormFile>
    {
        public FileValidator()
        {
            RuleFor(x => x.Length).NotNull().LessThanOrEqualTo(100)
                .WithMessage("File size is larger than allowed");

            RuleFor(x => x.ContentType).NotNull().Must(x => x.Equals("image/jpeg") || x.Equals("image/jpg") || x.Equals("image/png"))
                .WithMessage("File type is larger than allowed");

               ...
        }
    }

现在你可以像这样在你的CustomValidator中使用FileValidator

    public class CustomValidator : AbstractValidator<CustomViewModel>
    {
        public CustomValidator()
        {
            RuleForEach(x => x.Files).SetValidator(new FileValidator());
        }
    }

1
如果我想添加一个参数,比如MaxSize,该怎么办?<input type="file" asp-for="Files" multiple /> <input type="hidden" asp-for="MaxSize" value="1000" /> 如何将maxsize添加到RuleFor(x => x.Length).NotNull().LessThanOrEqualTo(MaxSize) .WithMessage("File size is larger than allowed");中的fileValidator? - farshid azizi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接