温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

解决ASP.NET Core Mvc文件上传限制问题

发布时间:2020-07-02 20:22:32 来源:网络 阅读:2888 作者:zddnd 栏目:编程语言

1.应用程序级别设置

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

解决ASP.NET Core Mvc文件上传限制问题

  1. public void ConfigureServices(IServiceCollection services)

  2. {

  3. services.Configure<FormOptions>(options =>

  4. {

  5. options.MultipartBodyLengthLimit = 60000000;

  6. });

  7. }

解决ASP.NET Core Mvc文件上传限制问题

  2.Action级别设置

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

解决ASP.NET Core Mvc文件上传限制问题

  1. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]

  2. public class RequestFormSizeLimitAttribute : Attribute, IAuthorizationFilter, IOrderedFilter

  3. {

  4. private readonly FormOptions _formOptions;


  5. public RequestFormSizeLimitAttribute(int valueCountLimit)

  6. {

  7. _formOptions = new FormOptions()

  8. {

  9. ValueCountLimit = valueCountLimit

  10. };

  11. }


  12. public int Order { get; set; }


  13. public void OnAuthorization(AuthorizationFilterContext context)

  14. {

  15. var features = context.HttpContext.Features;

  16. var formFeature = features.Get<IFormFeature>();


  17. if (formFeature == null || formFeature.Form == null)

  18. {

  19. // Request form has not been read yet, so set the limits

  20. features.Set<IFormFeature>(new FormFeature(context.HttpContext.Request, _formOptions));

  21. }

  22. }

  23. }

解决ASP.NET Core Mvc文件上传限制问题

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI