如何从ASP.NET MVC中的数据库加载图像?

r.r*_*r.r 1 .net c# sql asp.net asp.net-mvc

我已在数据库中保存了一个图像,并希望将其显示给用户.

存储图像的表格如下所示:

        Images
        ------
ImageData      Byte
ImageName      String
ContentType    String
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能加载并在我的视图中显示它?

Bra*_*nov 6

在Image控制器类中:

public ActionResult ProfileImage(string userName)
{
   var imageByteArray = // get image bytes from DB corresponding to userName
   string contentType = // get image content type from DB for example "image/jpg"
   string fileName = // get image file name from DB

   return File(imageByteArray, contentType, fileName);
}
Run Code Online (Sandbox Code Playgroud)

在视图中:

<img src='/Image/ProfileImage/yourUserName' alt='Profile image' />
Run Code Online (Sandbox Code Playgroud)

您还需要Global.asax中的自定义路由:

routes.MapRoute(
   "ProfileImage",                                                    
   "Image/ProfileImage/{userName}",                           
   new { controller = "Image", action = "ProfileImage", userName = "" }
);
Run Code Online (Sandbox Code Playgroud)

您还可以在位图中加载图像并应用更改,如调整大小,旋转等.如果这样做,请考虑将图像保存为png,因为GDI +(System.Drawing)可以使用此格式保持最佳质量和透明度.缓存动态图像也是一种很好的做法.