当前位置: 首页 > 编程笔记 >

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

邰伟彦
2023-03-14
本文向大家介绍解决ASP.NET Core Mvc文件上传限制问题实例,包括了解决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进行控制,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将不能访问并且报出异常。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍PHP 文件上传限制问题,包括了PHP 文件上传限制问题的使用技巧和注意事项,需要的朋友参考一下 PHP 大文件上传占用大量资源,因此需要对上传的大小进行限制,以下为相关的三个参数: client_max_body_size upload_max_filesize post_max_size 与以上相对应的三个报错信息: Warning: POST Content-Length of

  • 本文向大家介绍jquery.uploadifive插件怎么解决上传限制图片或文件大小问题,包括了jquery.uploadifive插件怎么解决上传限制图片或文件大小问题的使用技巧和注意事项,需要的朋友参考一下 jQuery.uploadifive插件可以很好的解决上传限制图片或文件大小问题,具体方法如下所示: 插件是可以用  但遇到问题如何提示是否超过限制呢 没办法研究插件js   发现网上给的

  • 本文向大家介绍解决layui上传文件提示上传异常,实际文件已经上传成功的问题,包括了解决layui上传文件提示上传异常,实际文件已经上传成功的问题的使用技巧和注意事项,需要的朋友参考一下 layui上传文件提示上传异常,实际文件已经上传成功 原因:上传回调的方法接收的参数应该是json格式的,之前返回的是String,所以一直走异常的方法 以上这篇解决layui上传文件提示上传异常,实际文件已经上

  • 本文向大家介绍Django 解决上传文件时,request.FILES为空的问题,包括了Django 解决上传文件时,request.FILES为空的问题的使用技巧和注意事项,需要的朋友参考一下 用html的form上传文件时,request.FILES为空,没有收到上传来的文件,但是在request.POST里找到了上传的文件名(只是一个字符串)。 解决方法: 为form表单规定enctype属

  • 本文向大家介绍spring boot上传文件出错问题如何解决,包括了spring boot上传文件出错问题如何解决的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了spring boot上传文件出错问题如何解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 有一段时间没有使用测试环境的测试服务器。 然后昨天想使用一下测试环境,进行过文件

  • 比如我要存一个论坛的所有帖子信息,那么帖子信息都是属于同一个mongodb document的,也就是属于同一个messages 表的。遇到这种问题应该怎么解决阿,不可能命名一个别的表吧?