下面就是详细讲解“ASP.NET MVC 从数据库中读取图片的实现代码”的完整攻略。
实现思路
ASP.NET MVC 从数据库中读取图片的实现思路比较简单,具体分为以下几个步骤:
- 将图片二进制数据存入数据库中;
- 从数据库中读取图片的二进制数据;
- 将读取到的二进制数据转换为图片,并响应给前端页面显示。
实现代码
写入图片数据到数据库
向数据库中写入图片数据时,需要使用二进制数据存储图片信息。下面是一个使用Entity Framework的示例代码片段,通过byte[]
类型存储一张图片:
public ActionResult SaveImage(HttpPostedFileBase file)
{
if(file != null && file.ContentLength > 0)
{
byte[] imageData = null;
using(var binaryReader = new BinaryReader(file.InputStream))
{
imageData = binaryReader.ReadBytes(file.ContentLength);
}
var newImage = new Image
{
Name = file.FileName,
Data = imageData
};
db.Images.Add(newImage);
db.SaveChanges();
}
return RedirectToAction("Index");
}
从数据库中读取图片数据
从数据库中读取图片数据时,需要先从数据库中取出二进制流,然后转换为MemoryStream对象,并将其转换为图片对象。下面是一个使用Entity Framework的示例代码片段:
public ActionResult ShowImage(int id)
{
var image = db.Images.Find(id);
if(image != null)
{
MemoryStream ms = new MemoryStream(image.Data);
Image returnImage = Image.FromStream(ms);
return new ImageResult(returnImage);
}
return null;
}
public class ImageResult : ActionResult
{
private Image image;
public ImageResult(Image image)
{
this.image = image;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.ContentType = "image/jpeg";
this.image.Save(context.HttpContext.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
上面的代码中,通过db.Images.Find(id)
从数据库中获取了指定id的图片数据,并将数据转为MemoryStream,在通过MemoryStream创建出Image对象,最后将该对象以JPEG格式响应给前端页面。
示例说明
根据上面的实现思路及代码,可以很容易地实现ASP.NET MVC 从数据库中读取图片的功能。
例如,在一个图片上传功能中,用户上传一张图片时,通过使用下面的代码可以将其图片数据保存到数据库:
@using (Html.BeginForm("SaveImage", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<button type="submit">保存</button>
}
然后,在读取图片时,可以将图片以如下方式显示在前端页面上:
<div>
<img src="@Url.Action("ShowImage", "Home", new { id = Model.ImageId})" />
</div>
其中,Model.ImageId
为视图模型中传递过来的图片ID。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net mvc 从数据库中读取图片的实现代码 - Python技术站