千家信息网

如何解决ASP.NET Core中Mvc文件上传限制的问题

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,小编给大家分享一下如何解决ASP.NET Core中Mvc文件上传限制的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
千家信息网最后更新 2025年01月18日如何解决ASP.NET Core中Mvc文件上传限制的问题

小编给大家分享一下如何解决ASP.NET Core中Mvc文件上传限制的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、简介

在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢?

二、设置上传文件大小

1.应用程序级别设置

我们需要在 ConfigureServices方法中添加如下代码,设置文件上传的大小限制为60 MB。

public void ConfigureServices(IServiceCollection services){  servicesConfigure(options =>  {    optionsMultipartBodyLengthLimit = 60000000;  });}

2.Action级别设置

除了上面对全局进行设置外,我们也可以通过自定义Filter的方式,对单个Action进行控制,Filter代码如下:

 [AttributeUsage(AttributeTargetsClass | AttributeTargetsMethod, 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 = contextHttpContextFeatures;      var formFeature = featuresGet();      if (formFeature == null || formFeatureForm == null)      {        // Request form has not been read yet, so set the limits        featuresSet(new FormFeature(contextHttpContextRequest, _formOptions));      }    }  }

因为ASP.NET Core MVC中,与之前版本不同的是具体功能被封装在了各种Feature(特征)中,HttpContext上下文只是能各个特征进行管理的容器。这个Filter中就只将Action拦截,对HttpContext中的FormFeature(负责表单提交功能)重新进行设置,从而达到限制具体Action上传文件大小的目的。

以上是"如何解决ASP.NET Core中Mvc文件上传限制的问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0