После создания метода POST
для моего API, который позволяет загружать изображения в базу данных, где я храню их как байты, я хотел создать метод GET
, который позволит мне получать их информацию и в конечном итоге показывать ихна веб-странице.
Мой класс модели выглядит следующим образом:
public class Image
{
public int recipeId { get; set; }
public string format { get; set; }
public string description { get; set; }
public IFormFile image { get; set; }
}
IFormFile image
- это изображение, которое загружается из внешнего интерфейса и преобразуется с использованием MemoryStream
для заполнениябаза данных такова:
Как говорится, ниже мой GET
метод:
[Route("v1/recipe/image/{recipeId}")]
[HttpGet()]
public Image GetImage(int recipeId)
{
using (var con = _connFactory())
{
con.Open();
return con.Query<Image>("SELECT * FROM RecipeImage WHERE RecipeId = @recipeId", new { recipeId }).FirstOrDefault();
}
}
Но яполучая следующую ошибку:
System.Data.DataException: 'Ошибка анализа столбца 3 (Image = System.Byte [] - Object)'
InvalidCastException: Невозможно привести объект кнаберите 'System.Byte []', чтобы набрать 'Microsoft.AspNetCore.Http.IFormFile'.
Я понимаю, что здесь происходит плохо, но я не мог найти способ обойти это. Единственное решение, о котором я подумал, это создание другого класса модели для Image, который вместо IFormFile
имеет byte[]
, но мне было интересно, есть ли лучший способ решения этой проблемы.