如题,本人想实现一个图片上传之前的预览效果,明白可以用fileReader对象来实现,但是IE8上却不支持,请问有什么兼容性的方案吗?
目前我有两种想法,一种是检测浏览器的版本,如果版本过低的话,就提示用户升级浏览器,但这是万不得已的做法,还有一种方案就是上传图片时,一旦input[type=file]里的内容发生变化,就直接把图片传给后台,然后后台把该图片在服务器上的src地址返回给我,我把这个src插进img标签内,实现一个预览效果,但我感觉这样向后台发送请求太频繁了,用户都还没上传图片只是预览一下,我却要像后台发送请求。。
请问还有什么更好的解决方案吗?
谢谢!
回答
IE 10+ , 预览功能 用 window.URL.createObjectURL ,低版本 用IE 的滤镜
js图片上传预览function PreviewImage(imgFile)
{
var filextension=imgFile.value.substring(imgFile.value.lastIndexOf("."),imgFile.value.length);
filextension=filextension.toLowerCase();
if ((filextension!='.jpg')&&(filextension!='.gif')&&(filextension!='.jpeg')&&(filextension!='.png')&&(filextension!='.bmp'))
{
alert("对不起,系统仅支持标准格式的照片,请您调整格式后重新上传,谢谢 !");
imgFile.focus();
}
else
{
var path;
if(document.all)//IE
{
imgFile.select();
path = document.selection.createRange().text;
document.getElementById("imgPreview").innerHTML="";
document.getElementById("imgPreview").style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\"" + path + "\")";//使用滤镜效果
}
else//FF
{
path=window.URL.createObjectURL(imgFile.files[0]);// FF 7.0以上
//path = imgFile.files[0].getAsDataURL();// FF 3.0
document.getElementById("imgPreview").innerHTML = "";
//document.getElementById("img1").src = path;
}
}
}