Javascript Internet Explorer和Base64图像显示

Javascript Internet Explorer和Base64图像显示,javascript,base64,Javascript,Base64,为了使用Javascript更容易地操作客户端的各种图像,我在服务器端(在VB 2010中)编写了一个函数,将文件转换为base64字符串,然后发送给客户端 当我在InternetExplorer8.0中使用3个不同的图像(1个肖像和2个风景)时,我意识到只有肖像图像被完全显示,同时两个风景图像被截断(我只能看到图像的上部) 我认为我的转换功能有一个bug,直到我用Firefox尝试了我的本地页面:Firefox完美地显示了所有图像 所以我的问题是:这是一个众所周知的IE错误吗?如果答案是肯定的

为了使用Javascript更容易地操作客户端的各种图像,我在服务器端(在VB 2010中)编写了一个函数,将文件转换为base64字符串,然后发送给客户端

当我在InternetExplorer8.0中使用3个不同的图像(1个肖像和2个风景)时,我意识到只有肖像图像被完全显示,同时两个风景图像被截断(我只能看到图像的上部)

我认为我的转换功能有一个bug,直到我用Firefox尝试了我的本地页面:Firefox完美地显示了所有图像


所以我的问题是:这是一个众所周知的IE错误吗?如果答案是肯定的,那么对于这个众所周知的错误有什么众所周知的补救办法吗?

IE8只能处理大小不超过32kb的Base64 URI图像。这是一个有点恼人的限制,但你仍然可以通过图标等来处理。请记住,Base64编码的图像平均比管道中发送的数据多33%,因此。。。嗯,你知道,用你的判断


对于任何感兴趣的人来说,也可以在IE6/7中实现这些功能(我可能会补充说,没有32kb的限制……):

IE8限制为32kb。解决这一问题的一种方法是只在“tiles”中提供图像,其中每个tile小于32KB。

这是一个众所周知的错误,即对所有URI施加了字符限制,这意味着数据方案URI将有一些内容被截断。除了Andrew Dunn的评论之外,最好使用文件系统或数据库(就像您致力于提供图像的SQL 2008)。我认为您不会接近jpg、gif、png等协议的压缩。此外,我发现使用虚拟路径提供程序从数据库提供图像要比使用文件系统慢得多,因此我建议重新考虑您的设计。谢谢您的回答。您的意思是base64编码在我的情况下没有用吗?我可以发送jpeg图像作为一个简单的字符串,并声明该字符串,就像我对base64所做的那样,只是替换“你不能用任何东西替换它。你可以做的是创建一个MHTML文件(MIME HTML)。这些文件可以包含不同对象的MIME类型。因此,MHTML文件可以包含普通文本编码的HTML文件,加上base64编码的图像,并且这里没有32KB的限制。我也会在IE 11中遇到这种情况。我正在一个新选项卡中打开base64图像,其大小约为20KB,但不会呈现。字符串长度为27834个字符