abp vnext + MinIO(四)实现大文件上传

开发工具:vs2022企业版

框架:abp vnext 3.1

操作系统:windows11

MinIO上传功能已经实现了,请参考这篇文章:MinIO (二) .net core中实现上传下载

通过反编译MinIO上传方法,如果上传的文件超过5M,会自动进行分片上传,上传速度还是可以的。

但是有个问题,net限制了上传的大小,只能上传25M上下的文件,如果上传一个八十多兆的文件,swagger接口报错,如果前端调用上传接口,会报CORS跨域错误,这篇文章介绍怎么解决这个问题。

1、Request body too large 错误

Post的body大概超过30m就会报这个错误,完整的错误是Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Request body too large

解决方法:全局增加请求body的大小,在Program.cs文件中增加配置:

options.Limits.MaxRequestBodySize = 1024 * 1024 * 500;//500MB

internal static IHostBuilder CreateHostBuilder(string[] args)
{
    return Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            //设置请求体大小
            webBuilder.ConfigureKestrel((context, options) =>
            {
                options.Limits.MaxRequestBodySize = 1024 * 1024 * 500;//500MB
            });

            webBuilder.UseStartup<Startup>();
        })

        .UseAutofac()
        .UseSerilog();
}

2、Multipart body length limit 134217728 exceeded 错误

Post的body大概超过100多M会碰到这个错误,完整的错误信息是 System.IO.InvalidDataException: Multipart body length limit 134217728 exceeded. 。
解决的方法是在startup.cs添加代码:

public void ConfigureServices(IServiceCollection services)
{
    var configuration = services.GetConfiguration();
    var appSettings = configuration.GetSection("AppSettings").Get<AppSettings>();

    services.AddApplication<MesHttpApiHostModule>(options =>
    {
        options.Services.AddObjectAccessor(appSettings);
    });
    //设置表单的最大值
    services.Configure<FormOptions>(x =>
    {
        //x.ValueLengthLimit = int.MaxValue;
        x.MultipartBodyLengthLimit = 1024 * 1024 * 500;//500MB
    });
}

到这里,设置完成后,通过swagger调用接口上传两百多兆的文件是没问题的,但是通过前端调接口上传依然报CORS跨域错误,我们的项目用的是IIS,所以还要设置IIS对文件的限制,有两步。

把“最大请求实体主体限制”200000改大,这里限制了最大上传是200K,可以在后面加3个0,200000000则限制大小变为约200M

这里设完后,还有一个地方需要在设一下,回到点击站点,双击“请求筛选”,如下图

进去后点击右边的编辑功能设置,下图

这里的300000000是限制上传约30M,适当的改大,后面加一个0就是限制约300M。

至此,通过前端调用上传接口,上传256M的文件30s成功。

上一篇:MinIO (三) 使用Webhook实时同步文件

下一篇:MinIO (五) .net core实现分片上传

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个程序员_zhangzhen

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

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

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

打赏作者

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

抵扣说明:

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

余额充值