gpt4 book ai didi

asp.net-mvc - 当目标是在 View 中显示此图像时,我应该在模型中使用哪种图像?

转载 作者:行者123 更新时间:2023-12-02 20:19:24 26 4
gpt4 key购买 nike

我现在的情况是将图像作为字节数组存储在 SQL 数据库中。我使用的是 EF,因此我的模型中有一个字节数组自动属性,然后首先通过代码将其提交到数据库。

我想将一个只读属性(即图像)放入我的模型中,并在调用 get 访问器时将字节数组转换为图像。两个问题:

  1. 我应该使用什么类型的图像?它应该是 System.Drawing 图像,还是更新的 BitmapImage?
  2. 这会导致代码优先和 EF 方面的任何问题吗?

如果你愿意,我可以发布代码,但我认为没有必要,如果有人想看我的代码,请发表评论。

最佳答案

1) What sort of Image should I use? Should it be a System.Drawing image, or a newer BitmapImage?

没有一个。您应该使用字节数组 ( byte[] )。

2) Will this cause any problems in regards to code-first and EF?

我不这么认为。我不是 EF 专家,但我认为应该可以映射 byte[]属性对应varbinary(max)数据库中的列。

现在回到关于显示图像并在 View 模型上拥有属性的原始问题。即使您这样做,也无法将此字节数组属性显示为 View 中的图像,除非您使用 data uri scheme 并非所有浏览器都广泛支持。如果您决定走这条路,情况可能如下:

@model MyViewModel
...
<img src="data:image/png;base64,@Html.Raw(Convert.ToBase64String(Model.Image))" alt="some image">

但是,如果您正在寻找一种适用于所有浏览器的解决方案作为替代方案,您可以设计一个 Controller 操作,该操作将从数据库中以字节数组的形式获取图像,然后将其流式传输到响应。接下来,从您的角度来看,您可以在 <img> 中引用此操作。标签。

举个例子:

public ActionResult Image(int id)
{
byte[] imageData = ... go query your database to retrieve the corresponding
image record using the id
return File(imageData, "image/png");
}

然后在主视图中只需指向 <img>标记到此 Controller 操作:

@model MyViewModel
...
<img src="@Url.Action("Image", "SomeController", new { id = Model.Id })">

关于asp.net-mvc - 当目标是在 View 中显示此图像时,我应该在模型中使用哪种图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14666224/

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