<!DOCTYPE html > <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title></title> <script type="text/javascript"> var maxSize = 2*1024*1024;//定义最大为2M。 var errMsg = "上传的附件文件不能超过2M!"; var tipMsg = "您的浏览器暂不支持计算上传文件的大小,确保上传文件不要超过2M,建议使用IE、FireFox、Chrome浏览器。"; var browserCfg = {}; var ua = window.navigator.userAgent; // ie浏览器 if (ua.indexOf("MSIE") >= 1){ browserCfg.ie = true; }else if(ua.indexOf("Trident") >= 1){ browserCfg.ie11 = true; } // 火狐浏览器 else if(ua.indexOf("Firefox") >= 1){ browserCfg.firefox = true; } // 谷歌浏览器 else if(ua.indexOf("Chrome") >= 1){ browserCfg.chrome = true; } /** * 获取图片的尺寸 */ function getImageWAndH(){ var w = 0; var h = 0; var size = 0; var pic = document.getElementById("pic"); var picValue = pic.value; var img = new Image(); img.onload = function(){//再绑定onload事件 img.onload = null;//解除onload事件 w = img.width; h = img.height; alert(w + "-1-" + h); }; img.src = picValue; // 防止img未加载完成,重新获取尺寸 if(w == 0 || h == 0){ w = img.width; h = img.height; alert(w + "-2-" + h); } size = getImageSize(pic); alert(w + "-3-" + h); // 获取img.onload事件中赋值的参数,需要延迟加载一下 setTimeout(function(){ alert("宽:" + w + "-高:" + h + "-大小:" + size); },10); } /** * 获取图片的大小 */ function getImageSize(obj){ try{ var fileSize = 0; // 如果当前浏览器为火狐或者chrome或者为ie11 if(browserCfg.firefox || browserCfg.chrome || browserCfg.ie11){ fileSize = obj.files[0].size; } // 如果当前浏览器为ie else if(browserCfg.ie){ // img标签(jsp页面中一定要有)负责获取文件大小 var imgTag = document.getElementById('img'); imgTag.dynsrc=obj.value; fileSize = imgTag.fileSize; } // 如果当前浏览器不为谷歌火狐或者ie,则提示 else{ return tipMsg; } if(fileSize==-1){ return tipMsg; }else if(fileSize > maxSize){ return errMsg; }else{ return fileSize + " B大小"; } }catch(e){ return "错误了"; } } </script> </head> <body> <input type="file" id="pic" /> <img id="img" style="display:none"> <input type="button" value="上传" onclick="getImageWAndH()" /> </body> </html>
目前在我本地ie下可以正常获取大小、尺寸,但是别人的ie下获取不了大小,而且在chrome中能获取大小,但是获取不了尺寸。请教各位前端前辈。。。请指教,很着急
一毛钱