Я пытаюсь создать API, который берет файл IForm из тела, а затем сохраняет файл. Затем верните имя файла в ответе. Я достиг того же самого раньше. Но тогда у меня было целочисленное значение в качестве параметра, в данном случае это строка. Я пытаюсь таким образом. Но когда маршрут совпадает, он всегда возвращает статус 200 без сохранения файла и имени файла в ответе.
[HttpPost]
[Route("/api/users/${email}/photos")]
public async Task<IActionResult> Upload(string email, [FromBody]IFormFile fileStream)
{
var user = this.repository.GetUserByEmail(email);
if (user == null)
return NotFound();
var uploadsFolderPath = Path.Combine(host.WebRootPath, "Images");
if (!Directory.Exists(uploadsFolderPath))
Directory.CreateDirectory(uploadsFolderPath);
if (fileStream == null) return BadRequest("null file");
if (fileStream.Length == 0) return BadRequest("Empty file");
if (fileStream.Length >= photoSettings.MaxBytes) return BadRequest("Max file size exceeded");
if (!photoSettings.IsSupported(fileStream.FileName)) return BadRequest("Invalid file type");
var fileName = Guid.NewGuid().ToString() + Path.GetExtension(fileStream.FileName);
var filePath = Path.Combine(uploadsFolderPath, fileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await fileStream.CopyToAsync(stream);
}
user.ImageUrl = fileName;
await unitOfWork.CompleteAsync();
return Ok(fileName);
}
Хотя ответ 200.
он даже не показывает неверный запрос, когда он должен иметь недопустимый тип файла.