解决ASP.NET Core Mvc文件上传限制问题实例

2025-05-29 0 103

一、简介

ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢?

二、设置上传文件大小

1.应用程序级别设置

我们需要在 ConfigureServices方法中添加如下代码,设置文件上传的大小限制为60 MB。

?

1

2

3

4

5

6

7
public void ConfigureServices(IServiceCollection services)

{

servicesConfigure<FormOptions>(options =>

{

optionsMultipartBodyLengthLimit = 60000000;

});

}

2.Action级别设置

除了上面对全局进行设置外,我们也可以通过自定义Filter的方式,对单个Action进行控制,Filter代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
[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上传文件大小的目的。

三、结语

本来感觉像是发现了一个文件上传的BUG,已经确认在1.0.1版本中已经进行了修复。在1.0.0版本中,如果Action没有设置一个IFromFile作为参数,那么Request.From.Files将不能访问并且报出异常。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.cnblogs.com/maxzhang1985/p/6113695.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 解决ASP.NET Core Mvc文件上传限制问题实例 https://www.kuaiidc.com/100012.html

相关文章

发表评论
暂无评论