Exemple #1
0
        /// <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()));
        }
Exemple #2
0
        /// <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);
        }