溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決ASP.NET Core Mvc文件上傳限制問題

發(fā)布時間:2020-07-02 20:22:32 來源:網(wǎng)絡 閱讀:2880 作者: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進行控制,F(xiàn)ilter代碼如下:

解決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問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI