如何在C#中对字节类型图像文件进行服务器端验证

时间:2019-03-31 12:35:18

标签: c# .net asp.net-mvc

如何对字节类型进行服务器端验证。我必须上传图像文件,为此我使用了字节。但是,当我不上传图像时,它会引发错误,这是正常现象,但是当我提供图像并上传并提交图像时出现了问题,该消息仍然出现。上传图片后如何删除该消息。

.class文件

  public class EmailModel
  {        
    [Display(Name = "Attach photo")]
    [Required(ErrorMessage = "Please upload image")]
    public byte[] Photo { get; set; }
   }

索引文件

<input type="file" name="ImageData" id="ImageData" onchange="fileCheck(this);" />
@Html.ValidationMessageFor(m => m.Photo, "", new { @class = "text-danger" })

提交表单后,我已使用此代码清除了控制器部分中的验证错误消息

Array.Clear(emailvalues.Photo, 0,emailvalues.Photo.Length);

1 个答案:

答案 0 :(得分:2)

您可以创建自定义验证属性

 public class ImageCheckAttribute : ValidationAttribute
    {

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {

            try
            {
                using (MemoryStream ms = new MemoryStream((byte[])value))
                    Image.FromStream(ms);
            }
            catch (ArgumentException)
            {
                return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
            }
            return null;
        }
    }

并使用

[Display(Name = "Attach photo")]
    [Required(ErrorMessage = "Please upload image")]
    [ImageCheck(ErrorMessage = "Byte array is incorrect image")]
    public byte[] Photo { get; set; }
   }