在asp mvc中显示来自数据库的图像

我从控制器获取字节数组格式的图像,如何在视图中显示此图像? 以最简单的方式。

使用Show操作创build一个控制器来显示图像,该操作需要从数据库中显示图像的ID。 该操作应返回包含具有适当内容types的图像数据的FileResult。

public class ImageController : Controller { public ActionResult Show( int id ) { var imageData = ...get bytes from database... return File( imageData, "image/jpg" ); } } 

在您的视图中,构build图像并使用图像ID使用控制器和操作为图像构buildpath。

 <img src='<%= Url.Action( "show", "image", new { id = ViewData["imageID"] } ) %>' /> 

接受的答案是:

 <img src='<%= Url.Action( "show", "image", new { id = ViewData["imageID"] } ) %>' 

是好的,但过时了mvc 4.更新后的语法现在应该是:

 <img src='@Url.Action( "show", "image", new { id = ViewData["imageID"] })' /> 

另外,我发现,当我需要这个function时,我已经将其他数据传递给视图,所以使用Model而不是ViewData是很好的。

 public class MyModel { public string SomeData {get;set;} public int FileId {get; set;} } 

从你的控制器:

 public ActionResult Index() { MyEntity entity = fetchEntity(); MyModel model = new MyModel { SomeData = entity.Data, FileId = entity.SomeFile.ID }; return View(model); } 

最后从你的angular度来看:

 <img src='@Url.Action("show", "image", new { id = Model.FileId })' /> 

接受答案的控制器上的“显示”方法将工作,但我会改变硬编码的“图像/ JPG”使用File.ContentType – 你可以存储这与字节[],所以你不需要猜测是否用户正在上传自己的图片。

我知道这个post是相当古老的,但它是第一次出现时,我想弄清楚如何做到这一点大部分奥吉答案是正确的,但大多数程序集是过时的

  1. 我下载mvc2预览版1

  2. 没有必要担心microsoft.web.mvc的东西,我找不到任何东西,无论如何search约一个小时,试图找出它演变成

这是我写的代码,用于显示图像types的db字段的图像

在我所谓的商店我的控制器类我有这个

 public ActionResult GetImage(int id) { byte[] imageData = storeRepository.ReturnImage(id); //instead of what augi wrote using the binarystreamresult this was the closest thing i found so i am assuming that this is what it evolved into return new FileStreamResult(new System.IO.MemoryStream(imageData), "image/jpeg"); } //in my repository class where i have all the methods for accessing data i have this public byte[] ReturnImage(int id) { // i tried his way of selecting the right record and preforming the toArray method in the return statment // but it kept giving me an error about converting linq.binary to byte[] tried a cast that didnt work so i came up with this byte[] imageData = GetProduct(id).ProductImage.ToArray(); return imageData; } 

现在我的视图网页我尝试了各种方式,我发现这些forms,没有任何工作,我假设他们只是过时,所以我试图随心所欲的最简单的事情,我能想到的,它的工作完美

 <image src='/store/getimage/<%= Html.Encode(Model.productID) %>' alt="" /> 

我不断从网站发布有关张贴img标签的错误,所以请确保您将上面的图像更改为img

希望有助于阻止任何人整天狩猎以获得最新的答案

http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=30886

 public ActionResult EmployeeImage(int id)
 {
     byte [] imageData =“从数据库中检索你的字节[]数据”;
    如果(imageData!= null && imageData.Length> 0)
     {
        返回新的FileStreamResult(新的System.IO.MemoryStream(imageData),“image / jpeg”);
     }
 }

假设你有一个有两列的dataRow(dr),“name”和“binary_image”(binary_image包含二进制信息)

  Byte[] bytes = (Byte[])dr["Data"]; Response.Buffer = true; Response.Charset = ""; Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.ContentType = dr["Image/JPEG"].ToString(); Response.AddHeader("content-disposition", "attachment;filename=" & dt.Rows[0]["Name"].ToString()); Response.BinaryWrite(bytes); Response.Flush(); Response.End();