使用jQuery不显眼的验证进行文件类型和扩展验证

时间:2016-06-09 18:35:50

标签: jquery asp.net-mvc unobtrusive-validation unobtrusive-javascript

我目前正在尝试验证将上传到网页的文件。我希望能够验证文件类型是.doc,.docx,.txt,.pdf,.rtf,并且大小是4 MB或更少。我尝试使用正则表达式使用以下代码验证类型。

     [RegularExpression(@"(^.*\.(rtf|doc|docx|pdf)$", ErrorMessage =@"Please upload a (.pdf, .doc, .docx, .txt, or .rtf) file")]

然后,我尝试通过创建以下类

来验证文件大小和类型
     public class ValidateFileAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        int MaxContentLength = 1024;
        string[] AllowedFileExtensions = new string[] { ".doc", ".docx", ".pdf", ".txt", ".rtf" };

        var file = value as HttpPostedFileBase;

        if (file == null)
            return false;

        else if (!AllowedFileExtensions.Contains(file.FileName.Substring(file.FileName.LastIndexOf('.'))))
        {
            ErrorMessage = "Upload File Type: " + string.Join(", ", AllowedFileExtensions);
            return false;
        }

        else if (file.ContentLength > MaxContentLength)
        {
            ErrorMessage = "The Size of the file is too large : " + (MaxContentLength / 1024).ToString() + "MB";
            return false;
        }

        else
            return true;
    }

}

(我知道1024不允许我上传一个非常大的文件,但出于测试原因,我把它留在那里看它是否会起作用)。

在我使用的视图中 @Html.TextBoxFor(m => m.CV.File, new { type="file"}) @Html.ValidationMessageFor(m => m.CV.File)

我不确定如何使验证正常工作,它不允许我输入不同的文件类型,但是,它也无法识别正确的文件类型。

0 个答案:

没有答案