解决ASP.NET Core Mvc文件上传限制问题
我们需要在ConfigureServices方法中添加如下代码,设置文件上传的大小限制为60 MB。
publicvoidConfigureServices(IServiceCollectionservices)
{
services.Configure<FormOptions>(options=>
{
options.MultipartBodyLengthLimit=60000000;
});
}
2.Action级别设置除了上面对全局进行设置外,我们也可以通过自定义Filter的方式,对单个Action进行控制,Filter代码如下:
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple=false,Inherited=true)]
publicclassRequestFormSizeLimitAttribute:Attribute,IAuthorizationFilter,IOrderedFilter
{
privatereadonlyFormOptions_formOptions;
publicRequestFormSizeLimitAttribute(intvalueCountLimit)
{
_formOptions=newFormOptions()
{
ValueCountLimit=valueCountLimit
};
}
publicintOrder{get;set;}
publicvoidOnAuthorization(AuthorizationFilterContextcontext)
{
varfeatures=context.HttpContext.Features;
varformFeature=features.Get<IFormFeature>();
if(formFeature==null||formFeature.Form==null)
{
//Request form has not been read yet, so set the limits
features.Set<IFormFeature>(newFormFeature(context.HttpContext.Request,_formOptions));
}
}
}
因为ASP.NET Core MVC中,与之前版本不同的是具体功能被封装在了各种Feature(特征)中,HttpContext上下文只是能各个特征进行管理的容器。这个Filter中就只将Action拦截,对HttpContext中的FormFeature(负责表单提交功能)重新进行设置,从而达到限制具体Action上传文件大小的目的。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。