gpt4 book ai didi

c# - 从数据库中获取 bytes[] 图像作为 IFormFile

转载 作者:可可西里 更新时间:2023-11-01 16:29:25 26 4
gpt4 key购买 nike

我正在制作一个可以上传到数据库和从数据库检索图像的 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 看起来像:

{"Cannot implicitly convert type 'object' to 'byte[]'. An explicit conversion exists (are you missing a cast?)"}

我不知道这段代码是否正确,但 data 始终为 null。我还在 SSMS 中尝试了 SQL 语句(SELECT Image FROM RecipeImage WHERE RecipeId = '140'),它产生了正确的输出:

1]

有没有其他方法可以实现我想做的事情?

最佳答案

您没有告诉 Dapper 期望的类型。

应该这样做:

using (var con = _connFactory())
{
data = con.Query<byte[]>("SELECT Image FROM RecipeImage WHERE RecipeId = @recipeId", new { recipeId }).FirstOrDefault();
}

我个人更喜欢:

using (var con = _connFactory())
{
data = con.QuerySingle<byte[]>("SELECT Image FROM RecipeImage WHERE RecipeId = @recipeId", new { recipeId });
}

如果找到多于或少于一张图像,将抛出异常。

关于c# - 从数据库中获取 bytes[] 图像作为 IFormFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58266442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com