/// <summary> /// Check if file is valid. /// Use only the custom function if provided. Else check if the file has an allowed extension and mimetype. /// </summary> /// <param name="filePath">File path.</param> /// <param name="mimeType">File mimetype.</param> /// <returns></returns> public bool Check(string filePath, string mimeType) { if (Function != null) { return(Function(filePath, mimeType)); } return(AllowedExts.Contains(Path.GetExtension(filePath)) && AllowedMimeTypes.Contains(mimeType.ToLower())); }
/// <summary> /// Validates the specified value with respect to the current validation attribute. /// </summary> /// <param name="value">The value to validate.</param> /// <param name="validationContext">The context information about the validation operation.</param> /// <returns>An instance of the <see cref="T:System.ComponentModel.DataAnnotations.ValidationResult" /> class.</returns> protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var name = string.IsNullOrEmpty(validationContext.DisplayName) ? validationContext.MemberName : validationContext.DisplayName; var fileInformation = (HttpFile)value; var mimeType = fileInformation.MediaType; if (!AllowedMimeTypes.Contains(mimeType)) { return(new ValidationResult(string.Format(Resources.MimeTypeNotAllowedText, name, mimeType))); } var length = fileInformation.Buffer.LongLength; var friendlyLength = ByteSize.FromBytes(length).ToString("#.#"); var friendlyLimit = ByteSize.FromBytes(FileSizeLimit).ToString("#.#"); return(length > FileSizeLimit ? new ValidationResult(string.Format(Resources.FileSizeLimitReachedText, friendlyLength, friendlyLimit)) : ValidationResult.Success); }