在ASP.NET Core MVC中,文件上傳的最大上傳文件默認爲20MB,若是咱們想上傳一些比較大的文件,就不知道怎麼去設置了,沒有了Web.Config咱們應該如何下手呢?git
咱們須要在 ConfigureServices方法中添加以下代碼,設置文件上傳的大小限制爲60 MB。github
public void ConfigureServices(IServiceCollection services) { services.Configure<FormOptions>(options => { options.MultipartBodyLengthLimit = 60000000; }); }
除了上面對全局進行設置外,咱們也能夠經過自定義Filter的方式,對單個Action進行控制,Filter代碼以下:學習
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] public class RequestFormSizeLimitAttribute : Attribute, IAuthorizationFilter, IOrderedFilter { private readonly FormOptions _formOptions; public RequestFormSizeLimitAttribute(int valueCountLimit) { _formOptions = new FormOptions() { ValueCountLimit = valueCountLimit }; } public int Order { get; set; } public void OnAuthorization(AuthorizationFilterContext context) { var features = context.HttpContext.Features; var formFeature = features.Get<IFormFeature>(); if (formFeature == null || formFeature.Form == null) { // Request form has not been read yet, so set the limits features.Set<IFormFeature>(new FormFeature(context.HttpContext.Request, _formOptions)); } } }
由於ASP.NET Core MVC中,與以前版本不一樣的是具體功能被封裝在了各類Feature(特徵)中,HttpContext上下文只是能各個特徵進行管理的容器。這個Filter中就只將Action攔截,對HttpContext中的FormFeature(負責表單提交功能)從新進行設置,從而達到限制具體Action上傳文件大小的目的。spa
原本感受像是發現了一個文件上傳的BUG,已經確認在1.0.1版本中已經進行了修復。在1.0.0版本中,若是Action沒有設置一個IFromFile做爲參數,那麼Request.From.Files將不能訪問而且報出異常。
code
GitHub:https://github.com/maxzhang1985/YOYOFx 若是覺還能夠請Star下, 歡迎一塊兒交流。orm
.NET Core 開源學習羣: 214741894 blog