asp.net-core - 如何通过 FluentValidation 验证上传的文件

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

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

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

最佳答案

您的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");

               ...
        }
    }

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

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

关于asp.net-core - 如何通过 FluentValidation 验证上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59358252/

相关文章:

visual-studio - VS 2019 Web 部署期间 TransformAppSettings 失败

c# - 使用 Automapper 映射自引用关系

c# - 如何支持用户名unicode?

javascript - 使用 javascript 提交具有新值的表单。 (MVC)

Php视频上传错误

c# - .net-core 依赖注入(inject)

javascript - 用于大型单页 js 应用程序的 dojo vs extjs

java - Java中实现模型- View - Controller 的不同风格

javascript - 从 Android native 浏览器上传时文件类型为空字符串

php - 如何用php上传odt/doc/pdf/txt文件