天天看點

解決ASP.NET Core Mvc檔案上傳限制問題

    我們需要在 ConfigureServices方法中添加如下代碼,設定檔案上傳的大小限制為60 MB。

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上傳檔案大小的目的。

本文轉自  zddnd  51CTO部落格,原文連結:http://blog.51cto.com/13013666/1939708

繼續閱讀