4

我有一个 ASP.net MVC 3 应用程序,我想将图像作为字节存储在模型中,然后将其从模型加载到 html 图像标记的 src 属性中。

例如

//Property in Model
 public byte[] Image { get; set; }

但是当我尝试这个时,它会出错:

<img src = "@Model.Image" alt=""/>

如何从字节加载图像?我想避免再次调用控制器以将图像作为 FileResult 获取。

可能吗?

4

2 回答 2

8

最简单的方法是这样的:

<img src="data:image/png;base64,@System.Convert.ToBase64String(Model.Image)" alt=""/>

这假定一个 PNG 有效负载,并且旧版浏览器不太支持。

我实际上建议将其保存到磁盘并让您的 Web 服务器单独托管它。

于 2012-09-05T23:12:33.587 回答
2

您可以直接将图像嵌入为 base64 编码字符串。

例子:

<img src="data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub/
/ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcpp
V0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7" 
width="16" height="14" alt="embedded folder icon">

在 Internet Explorer 8 中,数据的大小限制为 32 KiB。此外,base64 会导致 33% 的开销。

更多信息:http ://en.wikipedia.org/wiki/Data_URI_scheme

于 2012-09-05T23:13:06.387 回答