将图像字节数组放置到会话中不会在<img src=""/>标记

时间:2017-11-10 01:46:28

标签: asp.net-mvc image

我使用在线工具将图像转换为base 64。如果我将其复制并粘贴到我的<img src=data:image/jpeg;base64,/9j/4AAQSk....">中,则在视图中,我可以看到该图像。但是因为我希望这个图像可以在我的所有视图中使用,所以我将这个“data:image / jpeg; base64,/ 9j / 4AAQSk ....”放到会话变量中,如下所示:

System.Web.HttpContext.Current.Session["user_image"] = "data:image/jpeg;base64,/9j/4AAQSk...."

当我尝试使用此代码在我的视图中检索它时:

<div>
    Hello @HttpContext.Current.Session["user_name"]. Your id is @HttpContext.Current.Session["user_id"]
    @{
            var imageBase64 = Convert.ToBase64String((byte[]) HttpContext.Current.Session["user_image"]);
            var imageSrc = string.Format("data:image/gif;base64,{0}", imageBase64);
     }
    <img alt="programmer.jpg" src="@imageSrc " />
</div>

我无法渲染图像。你能帮忙吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您设置为会话的字符串已经是基本64图像源格式(带有data:image/jpeg;base64,前缀)。在您的视图中,您试图将其强制转换为字节数组,在执行视图代码时会抛出无效的强制转换异常

只需使用会话

中的字符串值即可
@{
    var imageBase64 = HttpContext.Current.Session["user_image"];
    <img alt="programmer.jpg" src="@imageBase64"/>
}

答案 1 :(得分:0)

对于那些好奇的人,我就是这样做的。在我看来:

<img alt="programmer.jpg"
         src="@HttpContext.Current.Session["user_image"]" />