File Upload上传大文件的限制问题(2020.5.9)

环境相关:

  • asp.net core 3.1
  • IIS
  • html

问题:

需要通过file upload控件上传大小超过30M的文件到服务器, 因为30M是IIS的默认POST Body大小限制,所以需要手动修改这个限制。

解决方案:

  • 在Asp.net core中的Program.cs里,将CreateWebHostBuilder方法修改如下修改Kestrel服务器的限制
       public static IWebHostBuilder CreateWebHostBuilder(string[] args)
        {
            return WebHost.CreateDefaultBuilder(args)
                 .ConfigureKestrel((context, options) =>
                 {
                     options.Limits.MaxRequestBodySize = 1048576000;
                 })
                 .UseStartup();
        }
  • 在Asp.net core中的Startup.cs里,在ConfigureServices方法中加入如下方法,修改多文件上传时的大小限制
       services.AddMvc();
            services.Configure(x =>
            {
                x.ValueLengthLimit = int.MaxValue;
                x.MultipartBodyLengthLimit = int.MaxValue;
            });
  • 在对应的Controller文件(我这里是FilesControleler.cs文件)Post方法头部添加如下说明[DisableRequestSizeLimit],取消对应方法的大小限制
      // POST: api/Files
        [HttpPost]
        [DisableRequestSizeLimit] //就是这句话!
        public IActionResult UploadFile([FromForm(Name = "files")] List files)
        {
            
            try
            {
                SaveFile(files, Alias);

                return Ok(new { files.Count, Size = SizeConverter(files.Sum(f => f.Length)) });
            }
            catch (Exception exception)
            {
                return BadRequest($"Error: {exception.Message}");
            }
            
        }
  • 在项目根目录添加web.config文件,asp.net core默认是没有这个文件的,自己添加,用来修改IIS服务器对文件大小的限制


  
  
    
      
      
    
    
      
        
        
      
    
    
      
        
        
        
      
    
  

OK,这样file upload文件上传大小就被限制在了1G。

你可能感兴趣的:(File Upload上传大文件的限制问题(2020.5.9))