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

时间:2010-08-25 14:57:05

标签: c# .net asp.net sql asp.net-mvc

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

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

        Images
        ------
ImageData      Byte
ImageName      String
ContentType    String

我应该如何加载并在我的视图中显示它?

1 个答案:

答案 0 :(得分:6)

在Image controller类中:

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);
}

在视图中:

<img src='/Image/ProfileImage/yourUserName' alt='Profile image' />

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

routes.MapRoute(
   "ProfileImage",                                                    
   "Image/ProfileImage/{userName}",                           
   new { controller = "Image", action = "ProfileImage", userName = "" }
);

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