function  HasFile(){
  var file1=document.getElementById("File1").value;
  var fileEx=file1.substring(file1.lastIndexOf(".")+1,file1.length).toLowerCase();
  if(fileEx!="jpg" && fileEx!="gif"&&fileEx!="rar"&&fileEx!="zip")
  {
        alert('上传文格式不正确,只能上传jpg|gif|rar|zip文件!');
        return false;
  }
 if(fileEx.toLowerCase()=="jpg"||fileEx=="gif"||fileEx=="bmp")
 {
  img=new Image();
  img.src=file1;
   var imgSize=1024*500;
    img.onreadystatechange = function(){
            if(img.readyState == "complete"){
                if(img.fileSize <=0 || img.fileSize > imgSize){
                    alert("当前文件大小" + img.fileSize / 1024 + "KB, 超出最大限制 " + imgSize / 1024 + "KB");
                    return false;
                }
                else{
                    alert("OK");
                    
                }
            }
        }
    
 }
else
 {
   return true;
  }
  
  alert(img.offsetHeight);
  alert(img.readyState);
 }为什么弹出总是0 和未初始化?各位高手有什么解决办法吗? 有没有其它方法可以判断图片大小和高度?

解决方案 »

  1.   

    var img=null加上 复制掉了
      

  2.   

    js默认浏览器安全状态下,无法获得img的大小 
      

  3.   

    IE7以后就不能用JS获取图片文件的大小了。有时候在HTML里可以,但是放在JSP中却无法获取大小。
    建议楼主采用flex技术来解决,或者在后台判断文件大小也是可以的。总之这种判断在JS里是不行的,你看到哪个网站判断图片或者文件大小是通过JS的?
      

  4.   

    if(fileEx.toLowerCase()=="jpg"||fileEx=="gif"||fileEx=="bmp")
     {
      img=new Image();
      img.onload=function(){
      alert(img.offsetHeight);
      alert(img.readyState);
    }
       var imgSize=1024*500;
        img.onreadystatechange = function(){
                。。
            }
        img.src=file1;
     }
    else
     {
       return true;
      }
      
      

  5.   

    js是不能获得本地文件相关信息的,ie6可能可以但ie7、ie8、firefox是不能的。如果打算兼容的话这功能是无法实现的。
      

  6.   

    ls对的
    而且ie7也不能直接预览的
    这里有一个支持ie ff的图片预览
    可以参考一下
      

  7.   

    楼上的方法不错,果然能兼容firefox