Код: Выделить всё
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
Код: Выделить всё
{
"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