解決ASP.NET Core Mvc文件上傳限制問(wèn)題實(shí)例
一、簡(jiǎn)介
在ASP.NET Core MVC中,文件上傳的最大上傳文件默認(rèn)為20MB,如果我們想上傳一些比較大的文件,就不知道怎么去設(shè)置了,沒(méi)有了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è)置外,我們也可以通過(guò)自定義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é)語(yǔ)
本來(lái)感覺(jué)像是發(fā)現(xiàn)了一個(gè)文件上傳的BUG,已經(jīng)確認(rèn)在1.0.1版本中已經(jīng)進(jìn)行了修復(fù)。在1.0.0版本中,如果Action沒(méi)有設(shè)置一個(gè)IFromFile作為參數(shù),那么Request.From.Files將不能訪問(wèn)并且報(bào)出異常。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- asp.net core實(shí)現(xiàn)文件上傳功能
- ASP.NET Core文件上傳與下載實(shí)例(多種上傳方式)
- asp.net core mvc實(shí)現(xiàn)文件上傳實(shí)例
- ASP.NET Core單文件和多文件上傳并保存到服務(wù)端的方法
- asp.net core集成kindeditor實(shí)現(xiàn)圖片上傳功能
- asp.net core分塊上傳文件示例
- ASP.NET Core實(shí)現(xiàn)文件上傳和下載
- ASP.NET Core實(shí)現(xiàn)多文件上傳
- ASP.NET Core上傳文件到minio的實(shí)現(xiàn)示例
相關(guān)文章
.NET Core 處理 WebAPI JSON 返回?zé)┤说膎ull為空
這篇文章主要介紹了.NET Core 處理 WebAPI JSON 返回?zé)┤说膎ull為空,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
.NET?如何使用?OpenTelemetry?metrics?監(jiān)控應(yīng)用程序指標(biāo)
這篇文章主要介紹了.NET?使用?OpenTelemetry?metrics?監(jiān)控應(yīng)用程序指標(biāo),通過(guò)代碼演示了如何通過(guò) OpenTelemetry 把 Metrics 的數(shù)據(jù)發(fā)送到 Prometheus 里進(jìn)行查詢與展示,然后又演示了自定義相關(guān)指標(biāo)來(lái)滿足業(yè)務(wù)數(shù)據(jù)指標(biāo)的監(jiān)控,需要的朋友可以參考下2024-06-06
C#中使用SQLite數(shù)據(jù)庫(kù)的方法介紹
SQLite是一個(gè)開(kāi)源的輕量級(jí)的桌面型數(shù)據(jù)庫(kù),它將幾乎所有數(shù)據(jù)庫(kù)要素(包括定義、表、索引和數(shù)據(jù)本身)都保存在一個(gè)單一的文件中。SQLite用C編寫(xiě)實(shí)現(xiàn),它在內(nèi)存消耗、文件體積、操作性能、簡(jiǎn)單性方面都有不錯(cuò)的表現(xiàn)2012-01-01
在asp.net中操作sql server數(shù)據(jù)庫(kù)的一些小技巧
在asp.net中操作sql server數(shù)據(jù)庫(kù)的一些小技巧...2006-09-09
淺談ASP.NETCore統(tǒng)一處理404錯(cuò)誤都有哪些方式
本文主要介紹了ASP.NETCore統(tǒng)一處理404錯(cuò)誤都有哪些方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
.NET中的repeater簡(jiǎn)介及分頁(yè)效果
Repeater控件是一個(gè)數(shù)據(jù)綁定容器控件,它能夠生成各個(gè)項(xiàng)的列表,并可以使用模板定義網(wǎng)頁(yè)上各個(gè)項(xiàng)的布局。本文對(duì)此進(jìn)行詳細(xì)介紹,下面跟著小編一起來(lái)看下吧2017-02-02
ASP.NET Core中的Razor頁(yè)面實(shí)現(xiàn)路由功能
本文詳細(xì)講解了ASP.NET Core中的Razor頁(yè)面實(shí)現(xiàn)路由功能的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
Ajax Control Toolkit BalloonPopup的使用實(shí)例及效果
Ajax Control Toolkit 工具包的簡(jiǎn)介及獲取方式等,BalloonPopup 控件可以顯示一個(gè)彈出層,里面可以包含很多內(nèi)容。2013-02-02
.NET?Core配置連接字符串和獲取數(shù)據(jù)庫(kù)上下文實(shí)例
這篇文章介紹了.NET?Core配置連接字符串和獲取數(shù)據(jù)庫(kù)上下文實(shí)例的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01

