最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:36:19
文档

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

解决ASP.NET Core Mvc文件上传问题实例:一、简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二、设置上传文件大小 1.应用程序级别设置 我们需要在 ConfigureService
推荐度:
导读解决ASP.NET Core Mvc文件上传问题实例:一、简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二、设置上传文件大小 1.应用程序级别设置 我们需要在 ConfigureService


一、简介

在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进行控制,Filter代码如下:

 [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将不能访问并且报出异常。

文档

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

解决ASP.NET Core Mvc文件上传问题实例:一、简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二、设置上传文件大小 1.应用程序级别设置 我们需要在 ConfigureService
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top