ASP.NET Core 8.0: ошибка Swagger при использовании IFormFile в конечной точке загрузкиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 ASP.NET Core 8.0: ошибка Swagger при использовании IFormFile в конечной точке загрузки

Сообщение Anonymous »

Я разрабатываю веб-API ASP.NET Core 8.0 для своего бакалаврского проекта. API включает конечную точку загрузки для обработки файлов Excel, содержащих данные о местоположении. Однако при реализации конечной точки Swagger не загружается и выдает следующую ошибку:

Код: Выделить всё

Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: Error reading parameter(s) for action WebApi.Controllers.LocationsController.UploadFile (WebApi) as [FromForm] attribute used with IFormFile. Please refer to https://github.com/domaindrivendev/Swashbuckle.AspNetCore#handle-forms-and-file-uploads for more information
В Postman, когда я отправляю файл через multipart/form-data, я получаю сообщение об ошибке:

Код: Выделить всё

{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"errors": { "file": ["The file field is required."] }
}
Код контроллера:

Код: Выделить всё

[HttpPost("upload")]
[RequestSizeLimit(104857600)] // Set request size limit to 100 MB

public async Task UploadFile([FromForm] IFormFile file)
{
var validationMessage = UploadHandler.ValidateFile(file);
if (!string.IsNullOrEmpty(validationMessage))
return BadRequest(validationMessage);

try
{
using var stream = new MemoryStream();
await file.CopyToAsync(stream);

using var package = new ExcelPackage(stream);
var worksheet = package.Workbook.Worksheets.FirstOrDefault();
if (worksheet == null)
return BadRequest("Invalid Excel file.");

var locations = new List();
for (int row = 2; row = 1000)
{
_context.Locations.AddRange(locations);
await _context.SaveChangesAsync();
locations.Clear();
}
}

// Save remaining rows
if (locations.Any())
{
_context.Locations.AddRange(locations);
await _context.SaveChangesAsync();
}

return Ok(new { Message = "File uploaded successfully.", RowsProcessed = worksheet.Dimension.End.Row - 1 });
}
catch (Exception ex)
{
return BadRequest($"Error processing file: {ex.Message}");
}
}
Класс модели:
Модель Location — это сложный объект с несколькими свойствами. Однако я считаю, что проблема связана с использованием [FromForm] с IFormFile.
Что я пробовал:
  • < li>Проверка логики конечной точки:
  • Логика сокращена до минимальной проверки наличия файлов.
  • Подтверждено, что файл передан как [FromForm] IFormFile.
  • По-прежнему отображается сообщение «Поле файла является обязательным» в Postman.
  • Отладка Swagger:
  • Комментирование контроллера загрузки позволяет Swagger load.
  • Параметр [FromForm] с IFormFile, по-видимому, вызывает сбой Swagger.
  • Проверено Postman:
  • Проверенному типу контента автоматически присваивается значение multipart/form-data.
  • Заголовок Content-Type не добавляется вручную.
Вопрос:
Как я могу решить эту проблему? Я пробовал использовать ChatGPT, но он не очень помог мне в устранении неполадок. Любая помощь или идеи будут высоко оценены!

Подробнее здесь: https://stackoverflow.com/questions/793 ... d-endpoint
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»