无法从Nvarbinary [max]数据库显示图像

时间:2017-03-23 04:05:28

标签: html asp.net-mvc

当数据库中的图像为0xFFD8FFE00 .......

时,如何显示图像

我正在使用MVC 5和EF

我的代码上传图片:

        string pic = System.IO.Path.GetFileName(file.FileName);
        string path = System.IO.Path.Combine(
                               Server.MapPath("~/Content"), pic);
        file.SaveAs(path);

        using (MemoryStream ms = new MemoryStream())
        {
             file.InputStream.CopyTo(ms);
             model.Image = ms.GetBuffer();
        }

        var image = new Image()
        {
            Image1 = model.Image
        };

        db.SaveChanges();

正如您可以看到我使用viewModel和Image [/ p>的byte []数据类型

如何将其转换为图像并在视图中显示?

1 个答案:

答案 0 :(得分:0)

您可以将byte[]转换为based64字符串,可将其转换为html格式,如

@{
    var base64 = Convert.ToBase64String(Model.Image);
    var imgSrc = ($"data:image/png;base64,{base64}");
}

这会将图片转换为base64string,我认为Model.Image的类型为byte[],最后将imgSrc添加到html标记image

<img src="@imgSrc" />

另一种方法是使用Viewbag以便实施

var base64 = Convert.ToBase64String(Image);
Viewbag.imgSrc = ($"data:image/png;base64,{base64}");

并在视图中使用viewbag

<img src="@Viewbag.imgSrc" />