Member 12003880
В случае приложения .NET CORE настройка может быть выполнена гораздо более простым способом. Самый простой способ сделать это-добавить атрибут RequestSizeLimit в модель. Например:
[RequestSizeLimit(5*1024*1024)] // set the maximum file size limit to 5 MB
public class InputModel
{
...
}
Это также поможет принять атрибут проверки для проверки того, что размер загруженного файла ограничен конкретным размером, который вы ищете. Например:
namespace MyApp.Validators
{
using Microsoft.AspNetCore.Http;
using System.ComponentModel.DataAnnotations;
[AttributeUsage(
validOn: AttributeTargets.Field | AttributeTargets.Property,
AllowMultiple = false,
Inherited = true)]
public class MyUploadFileSizeValidator
: ValidationAttribute
{
public MyUploadFileSizeValidator(long sizeInBytes)
{
this.SizeInBytes = sizeInBytes;
}
public long SizeInBytes { get; private set; }
/// <summary>
/// Validates the specified value with respect to the current validation attribute
/// </summary>
/// <param name="value">the value to validate</param>
/// <returns>Returns - true to specify size is okay.</returns>
public override bool IsValid(object value)
{
bool isValid = false;
// NOTE: Use HttpPostedFileBase instead of IFormFile in ASP.NET MVC
if (value is IFormFile file)
{
isValid = file.Length <= this.SizeInBytes;
}
return isValid;
}
}
}
а затем просто используйте его на свойстве модели. Итак, ваша модель будет выглядеть примерно так:
[RequestSizeLimit(5*1024*1024)] // set the maximum file size limit to 5 MB
public class InputModel
{
[Required(ErrorMessage = "Please select an image file to upload.")]
[MyUploadFileSizeValidator(sizeInBytes: 5 * 1024 * 1024,
ErrorMessage = "Image filesize should be smaller than 5 MB")]
[Display(Name = "Profile Photo")]
public IFormFile ProfilePhoto { get; set; }
}
Надеюсь, это поможет.
CHill60
До тех пор, пока плакат приносит что-то новое в дискуссию, то воскрешение старых постов с новыми решениями приемлемо (где-то есть сообщение от Криса об этом).