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