在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是相当古老的,但它是第一次出现时,我想弄清楚如何做到这一点大部分奥吉答案是正确的,但大多数程序集是过时的
-
我下载mvc2预览版1
-
没有必要担心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();