【问题标题】:How can I upload a 2.3gb file in .net 5?如何在 .net 5 中上传 2.3gb 文件?
【发布时间】:2021-06-20 12:50:07
【问题描述】:

我的任务是允许从内置于 .net5 剃须刀页面的内部应用程序上传,每个文件的大小超过 2gb。我已更改 web.config 和服务器上的所有设置以允许上传这些文件,但尝试时仍然收到 400 错误。

<system.web>
  <httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>

<requestFiltering>
      <requestLimits maxAllowedContentLength="3147001541" />
    </requestFiltering>

我正在使用以下方式上传文件

var path = Path.Combine(targetFileName, UploadedFile.FileName);

            using (var stream = new FileStream(path, FileMode.Create))
            {
                await UploadedFile.CopyToAsync(stream);
            }

然后它只是将位置保存在复制该文件的数据库中。

【问题讨论】:

  • maxRequestLength 以 kB 为单位。 20480kB 是 20MB。这比 2GB 小得多。
  • 此答案适用于 .NET Core,但由于 .NET 5 是其继任者,它也可能适用于您的问题:Increase upload file size in Asp.Net core

标签: c# .net asp.net-core razor-pages .net-5


【解决方案1】:

system.web 设置仅供 ASP.NET(而非 Core)使用。在 ASP.NET Core 中,您可以通过添加 RequestSizeLimitAttributeDisableRequestSizeLimitAttribute 来更改操作的限制。此外,您可能需要通过添加 RequestFormLimitsAttribute 来增加表单数据限制。

MVC:

[RequestSizeLimit(3147001541)]
[RequestFormLimits(MultipartBodyLengthLimit = 3147001541)]
public async Task<IActionResult> Upload(IFormFile file)
{
    // ...
}

剃刀页面:

@attribute [RequestSizeLimit(3147001541)]
@attribute [RequestFormLimits(MultipartBodyLengthLimit = 3147001541)]

详情请参阅documentationthis question

【讨论】:

  • 忘记添加我正在使用 Razor 页面。这似乎不适用于 razor 页面
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 2021-09-09
  • 2015-07-28
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2016-03-14
相关资源
最近更新 更多