net core上传文件异常:Multipart body length limit 16384 exceeded.

.Net Core 中接收上传文件时会遇到这个异常: Multipart body length limit 16384 exceeded

两种解决办法

1.修改配置

在startup的ConfigureServices方法中添加以下代码

services.Configure<FormOptions>(x => 
            { 
                x.ValueLengthLimit = int.MaxValue;
                x.ValueCountLimit = int.MaxValue;
                x.MultipartBodyLengthLimit = long.MaxValue;
                x.MultipartBoundaryLengthLimit = int.MaxValue;
                x.BufferBodyLengthLimit = long.MaxValue;
                x.BufferBody = true;
                x.MemoryBufferThreshold = int.MaxValue;
                x.KeyLengthLimit = int.MaxValue;
                x.MultipartHeadersLengthLimit = int.MaxValue;
                x.MultipartHeadersCountLimit = int.MaxValue; 
            });

在Program类的CreateHostBuilder方法中添加
.UseKestrel(options=> {
options.Limits.MaxRequestBodySize = null;
});

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                    .UseUrls("http://*:365")
                    .UseKestrel(options=> {
                        options.Limits.MaxRequestBodySize = null;
                    });
                });

在控制器上标识

[DisableRequestSizeLimit]
		[HttpPost]
        [DisableRequestSizeLimit]
        public async Task<dynamic> UploadFileAsync(){
		if (Request.Form.Files.Count == 0) return BadRequest("Upload Failed: no file.");

                var file = Request.Form.Files[0];

                if (file.Length < 1) return BadRequest("Upload Failed: file is empty.");
		}

2.使用[FromForm]IFormCollection formData 接收
接口函数中不直接使用 Request.Form, 而需要将Form放到参数中。即:

public async Task<dynamic> UploadFileAsync([FromForm]IFormCollection formData){
		// 这边直接使用formData
		}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香煎三文鱼

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值