显示数据库中的图片

Display picture from database

我有一个包含照片列的数据库,我想在网站上显示它。 我在 Visual studio 2019 年编码。这是一个 C#

中的 MVC 项目

这两张照片显示了我得到的东西。第二张图片的 link 哪儿也去不了

有两种可能:

第一个选项:

将图像的路径存储在数据库中并动态设置 <img>

src

第二个选项:

将图像数据保存在您的数据库中并在加载时重建它,您的 <img> src 必须是加载、构造和 returns 图像的控制器操作。

编辑

选项 2 的快速示例:

在您的 cshtml 中,像这样定义您的图像:

<img src="@Url.Action("GetFromDB", "Image", new { id = 1234 })" />

注意,您可以根据您的场景动态设置图片的id。假设您有一个用户 class 分配了个人资料照片,您只需要使用此 ID。

在后端你需要一个处理这个请求的动作,在这个例子中 ImageController:

public ActionResult GetFromDB(int id)
{
    var image = _dbContext.Find(id);
    return File(image.PictureData, image.ContentType);
}

假设您有一个简单的图像数据库模型,如下所示:

class Image
{
    [Key]
    public int ID { get; set; }
    public byte[] PictureData { get; set; }
    public string ContentType { get; set; }
}

要将图像保存到数据库,您只需要获取它的字节数和内容类型,例如:

using (var ms = new MemoryStream())
{
    using (var uploadedImage = Image.FromStream(formFile.OpenReadStream(), true, true))
    {
        uploadedImage.Save(ms, ImageFormat.Jpeg); // you can actually chose this yourself, depending on your scenario
    }

    var image = new Model.Image()
    {
        PictureData = ms.ToArray(),
        ContentType = "image/jpeg" // needs to match what you chose above
    };
    _dbContext.Pictures.Add(image);
    _dbContext.SaveChanges();
}