显示数据库中的图片
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();
}
我有一个包含照片列的数据库,我想在网站上显示它。 我在 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();
}