2012-04-15 76 views
20

为了更方便地使用Javascript处理客户端上的各种图像,我在服务器端编写了一个函数(在VB 2010中),将文件转换为发送给客户端的base64字符串。Internet Explorer和Base64图像显示

当我在Internet Explorer 8.0中使用3种不同的图像,1幅肖像和2幅风景尝试它时,我意识到只有肖像图像完全显示,同时两幅风景图像都被截断(我可以看到只是上部的图片)。

我以为我的转换功能有一个错误,直到我尝试使用Firefox的本地页面:Firefox的每个图像都完美显示。

所以有我的问题:这是一个着名的Internet Explorer的bug吗?如果答案是肯定的,那么对于这个众所周知的bug是否有一个众所周知的补救措施?

+3

链接到您的测试页面? – Marcel 2012-04-15 04:30:23

+3

这是一个众所周知的错误,IE对所有URI都有一个字符限制,这意味着数据方案URI将会截断一些内容。 – 2012-04-15 04:31:04

+0

除了Andrew Dunn的评论之外,您最好还是使用文件系统或数据库(如SQL 2008专用于服务映像)。我不认为你会接近压缩的协议,如jpg,gif,png。另外我发现使用虚拟路径提供程序来提供来自dB的图像比文件系统慢得多,所以我建议重新考虑您的设计。 – 2012-04-15 05:19:48

回答

14

IE8只能执行最大32kb的Base64 URI映像。这是一个令人讨厌的限制,但你仍然可以通过图标/等。请记住,无论如何,Base64编码图像平均多出33%的数据,所以它是......呃,你知道,使用你的判断。

任何有兴趣,它也可能使在IE6/7,这些工作(不,我想补充的是32KB的限制...):http://venodesigns.net/2010/06/17/you-got-your-base64-in-my-css/