Я создаю API, который может загружать и извлекать изображения из базы данных. Первая часть закончена - изображение сохраняется в переменной IFormFile
и передается в базу данных как bytes[]
.
Изображение модель:
public class Image
{
public int recipeId { get; set; }
public string format { get; set; }
public string description { get; set; }
public IFormFile image { get; set; }
}
Так вот как я сейчас пытаюсь написать метод GET. Моя идея состоит в том, чтобы получить байты из базы данных и преобразовать их в файл, который впоследствии можно будет увидеть на веб-странице.
[Route("v1/recipe/image/{recipeId}")]
[HttpGet()]
public IActionResult GetImage(int recipeId)
{
byte[] data;
try
{
using (var con = _connFactory())
{
data = con.Query("SELECT Image FROM RecipeImage WHERE RecipeId = @recipeId", new { recipeId }).FirstOrDefault();
}
return File(new MemoryStream(data), "image/jpeg", "SomeName.jpg");
}
catch (Exception exc)
{
return BadRequest();
}
}
exc
выглядит так:
{"Невозможно неявно преобразовать тип 'object' в 'byte []'. Существует явное преобразование (вам не хватает приведения?)"}
Я не знаю, должен ли этот кодбудь правильным или нет, но data
всегда равно нулю. Я также попробовал оператор SQL (SELECT Image FROM RecipeImage WHERE RecipeId = '140'
) в SSMS, и он выводит правильный вывод:
Есть ли другой способ, которым я мог бы добиться того, что я пытаюсьделать?