解決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將不能訪問并且報出異常。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
.NET Core 處理 WebAPI JSON 返回煩人的null為空
這篇文章主要介紹了.NET Core 處理 WebAPI JSON 返回煩人的null為空,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
.NET?如何使用?OpenTelemetry?metrics?監(jiān)控應用程序指標
這篇文章主要介紹了.NET?使用?OpenTelemetry?metrics?監(jiān)控應用程序指標,通過代碼演示了如何通過 OpenTelemetry 把 Metrics 的數(shù)據(jù)發(fā)送到 Prometheus 里進行查詢與展示,然后又演示了自定義相關指標來滿足業(yè)務數(shù)據(jù)指標的監(jiān)控,需要的朋友可以參考下2024-06-06
在asp.net中操作sql server數(shù)據(jù)庫的一些小技巧
在asp.net中操作sql server數(shù)據(jù)庫的一些小技巧...2006-09-09
淺談ASP.NETCore統(tǒng)一處理404錯誤都有哪些方式
本文主要介紹了ASP.NETCore統(tǒng)一處理404錯誤都有哪些方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04
ASP.NET Core中的Razor頁面實現(xiàn)路由功能
本文詳細講解了ASP.NET Core中的Razor頁面實現(xiàn)路由功能的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
Ajax Control Toolkit BalloonPopup的使用實例及效果
Ajax Control Toolkit 工具包的簡介及獲取方式等,BalloonPopup 控件可以顯示一個彈出層,里面可以包含很多內(nèi)容。2013-02-02
.NET?Core配置連接字符串和獲取數(shù)據(jù)庫上下文實例
這篇文章介紹了.NET?Core配置連接字符串和獲取數(shù)據(jù)庫上下文實例的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01

