.Net 8 文件上传限制。尝试将 89MB 文件上传到我的 API 控制器

问题描述 投票:0回答:1

对于较小的文件(即 30MB 左右)我没有问题。然而,一旦我尝试将 89MB 文件上传到我的 API 控制器,它就会抛出

(Request Entity Too Large)
错误:

来自我的前端:

POST http://localhost:21971/api/import/MediaUpload?sessionID=***&pid=*** net::ERR_FAILED 413 (Request Entity Too Large)

我的后端 .Net 8 API 项目包含一个 import.controller.cs:

[HttpPost]
 [Route("MediaUpload")]
 public async Task<IActionResult> MediaUpload([FromQuery] string sessionId, [FromQuery] string pid, [FromForm] ImportMediaUploadModel formData)
{
  IFormCollection form;

  try
  {
      form = await Request.ReadFormAsync();
      form.Keys.ToList().ForEach(key =>
      {
          if (key.Equals("MediaInfo", StringComparison.InvariantCultureIgnoreCase))
          {
              formData.MediaInfo = JsonConvert.DeserializeObject<List<MediaInfo>>(form[key]);
          }
      });
  }
  
     for (var i = 0; i < formData.Files?.Count; i++)
   {
       UploadFile(formData.Files[i]);
   }   
   // ...
   return Ok();
 } 
  
   private async void UploadFile(IFormFile file)
  {
      var thisFileName = file.FileName.Trim('\"');
      string? localPath = config[key: "ImportImageFolderPath"];
      string fullPath = Path.Combine(localPath, thisFileName);
      FileInfo fileInfo = new(fullPath);

      using var stream = System.IO.File.Create(fullPath);
      await file.CopyToAsync(stream);
  }

我在 QA 环境中上传时遇到同样的错误(而不仅仅是在本地主机)。

enter image description here

我正在阅读一些文档,例如这样的,https://learn.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-8.0,但我缺乏一些专业知识最新 .Net 级别的知识。

提前感谢您提供有关如何处理 .Net 8 中文件上传限制的任何建议。

asp.net-core file-upload .net-8.0
1个回答
0
投票

您可以使用

[RequestSizeLimit(500*1024*1024)]
属性来处理高达 500 MB 的请求。

[HttpPost]
[Route("MediaUpload")]
[RequestSizeLimit(500*1024*1024)]
public async Task<IActionResult> MediaUpload([FromQuery] string sessionId, [FromQuery] string pid, [FromForm] ImportMediaUploadModel formData)
{

或者您可以在 Program.cs 中进行如下配置:

builder.Services.Configure<FormOptions>(x => {
    x.ValueCountLimit = int.MaxValue;
});
© www.soinside.com 2019 - 2024. All rights reserved.