【问题标题】:How to validate uploaded files by FluentValidation如何通过 FluentValidation 验证上传的文件
【发布时间】:2023-03-09 07:17:01
【问题描述】:

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

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

【问题讨论】:

  • 您要在服务器端检查验证吗?
  • 是 例如文件大小/允许的扩展名 s ,...

标签: asp.net-core model-view-controller file-upload fluentvalidation


【解决方案1】:

你的ViewModel 必须有public IList&lt;IFormFile&gt; 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());
        }
    }

【讨论】:

  • 如果要添加MaxSize等参数怎么办? 如何将 maxsize 添加到 RuleFor(x => x. Length).NotNull().LessThanOrEqualTo(MaxSize) .WithMessage("文件大小大于允许");在文件验证器中
猜你喜欢
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多