解決ASP.NET Core Mvc文件上傳限制問題實例
一、簡介
在ASP.NET Core MVC中,文件上傳的最大上傳文件默認為20MB,如果我們想上傳一些比較大的文件,就不知道怎么去設置了,沒有了Web.Config我們應該如何下手呢?
二、設置上傳文件大小
1.應用程序級別設置
我們需要在 ConfigureServices方法中添加如下代碼,設置文件上傳的大小限制為60 MB。
public void ConfigureServices(IServiceCollection services) { servicesConfigure<FormOptions>(options => { optionsMultipartBodyLengthLimit = 60000000; }); }
2.Action級別設置
除了上面對全局進行設置外,我們也可以通過自定義Filter的方式,對單個Action進行控制,F(xiàn)ilter代碼如下:
[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<IFormFeature>(); if (formFeature == null || formFeatureForm == null) { // Request form has not been read yet, so set the limits featuresSet<IFormFeature>(new FormFeature(contextHttpContextRequest, _formOptions)); } } }
因為ASP.NET Core MVC中,與之前版本不同的是具體功能被封裝在了各種Feature(特征)中,HttpContext上下文只是能各個特征進行管理的容器。這個Filter中就只將Action攔截,對HttpContext中的FormFeature(負責表單提交功能)重新進行設置,從而達到限制具體Action上傳文件大小的目的。
三、結語
本來感覺像是發(fā)現(xiàn)了一個文件上傳的BUG,已經(jīng)確認在1.0.1版本中已經(jīng)進行了修復。在1.0.0版本中,如果Action沒有設置一個IFromFile作為參數(shù),那么Request.From.Files將不能訪問并且報出異常。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
.Net中如何操作IIS的虛擬目錄原理分析及實現(xiàn)方案
編程控制IIS實際上很簡單,和ASP一樣,.Net中需要使用ADSI來操作IIS,但是此時我們不再需要GetObject這個東東了,因為Net為我們提供了更加強大功能的新東東2012-12-12根據(jù)身份證號碼計算出生日期、年齡、性別(18位) 根據(jù)入職時間計算工齡
根據(jù)身份證號碼計算出生日期、年齡、性別(18位);根據(jù)入職時間計算工齡實現(xiàn)代碼,需要的朋友可以參考下2012-10-10ASP.NET中MVC從后臺控制器傳遞數(shù)據(jù)到前臺視圖的方式
這篇文章主要介紹了ASP.NET中MVC從后臺控制器傳遞數(shù)據(jù)到前臺視圖的方式,以實例形式較為詳細的分析了asp.net中MVC數(shù)據(jù)傳遞的具體實現(xiàn)方法,需要的朋友可以參考下2014-12-12asp.net core 使用 TestServer 來做集成測試的方法
這篇文章主要介紹了asp.net core 使用 TestServer 來做集成測試,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11Asp.net中使用PageDataSource分頁實現(xiàn)代碼
這篇文章主要介紹asp.net中使用PageDataSource分頁的方法,需要的朋友可以參考下2013-04-04.NET5控制臺程序使用EF連接MYSQL數(shù)據(jù)庫的方法
這篇文章主要介紹了.NET5控制臺程序使用EF連接MYSQL數(shù)據(jù)庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08