如何在ASP.NET MVC 4中将图像显示为从SQL Server转换为varbinary(max)到图像

时间:2015-07-25 05:41:45

标签: asp.net-mvc sql-server-2008 asp.net-mvc-4 razor

我的图像存储格式是文件 - > byte[] - > string base64 - > varbinary(max)

我的图片检索格式为varbinary(max) - > byte[] - >然后是图像格式。

但我无法显示图像。

请帮助检索图像格式。

1 个答案:

答案 0 :(得分:3)

你的影像是什么类型的? 也许你需要一个方法Controller.File(fileContents: yourByteArray, contentType: "image/jpeg")

例如:

// Represent a image.
public class MyImage
{
    public ID { get; set; }
    public byte[] Data { get; set; }
    public string MimeType { get; set; } 
}

上传图片:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        if (file != null)
        {
            var image = new MyImage() 
            {
                MimeType = file.ContentType,
                Data = new byte[file.ContentLength]
            }  

            file.InputStream.Read(image.Data, 0, file.ContentLength); 
        }

        repository.SaveImage(image);

        return RedirectToAction("Index");
    }
    else
    {
        return View(product);
    }
}

获取图片:

public FileContentResult GetImage(int imageID)
{
    var image = repository.Images.FirstOrDefault(p => p.ID == imageID);

    if (image != null)
    {
         return File(image.Data, image.MimeType); 
    }
    else
       return null;
}

查看:显示图片

@model YourApp.Entities.MyImage

<div class="item">

        <img src="@Url.Action("GetImage", "YourController", 
             new { Model.ID })" />
 </div>