日期:2014-05-16  浏览次数:20862 次

图片的base64编码作为ajax的url参数传递时,ie8浏览器支持url的最大长度问题
首先,推荐一个关于url最大长度的相关链接:http://blog.csdn.net/yang_5/article/details/8174889

由于这篇文章指出的ie支持url的最大长度和我测试的结果出入较大,我也不确定了。也许是除了浏览器还有其他限制吧!

工作中遇到如下问题:
需要将客户端的图片的base64编码传递到服务器后再进行生成图片到服务器,在js中传递时,用ajax的post方式请求时,通过url传参的方法传递该长度较大的编码时,长度是受限
制的。
在ie8上真实测试的结果如下:
strbase64date为图片的base64原码。
经过编码后对base64原码进行截取长度为48599的字符串:encodeURIComponent(strbase64date).substr(0,48599)

xmlhttp2.Open("POST",URL,false);
URL包括长度较大的参数(图片的base64码)48599位加上url地址的长度总和为48666字符时,当URL总长度大于48666字符时,后台就获取不到base64数据了。
这说明,ajax的post请求时,用url传递参数是肯定受长度限制的。
最后解决办法:

直接用xmlhttp2.Send(postData);传递就行了。这种长度较长的base64码还是别用url传参了

用360浏览器测试与ie8几乎差不多。
在这里,只测试了ie8浏览器,不知道ie其他版本的浏览器会怎么样。若有相关信息,还请各位分享一下!