这种情形是由于图片的加载状态未处于"complete"而造成的.参考http://expert.csdn.net/Expert/TopicView1.asp?id=2481135在选择以及提交阶段进行两次文件大小判断.这样才能保证无论如何都在图片加载成功后再取其fileSize

解决方案 »

  1.   

    不用 new Image() 对象, 如楼上所述图片未加载完时读取的 fileSize 是 -1: 你可以用:
    <input type=file onchange="document.images['meizz'].src=this.value">
    <img id=meizz style="display: none" onload="alert('fileSize = '+ this.fileSize +' 字节');">
      

  2.   

    麻烦还是指点一下,我的完整语句是这样的.
    <script language="javascript">
    function re()
    {
    window.close();
    window.opener.document.location.reload()
    }
    function JudgeKeyword(aForm) 

      if (aForm.pic1name.value == "") 
      { 
    alert("请选择本地图片文件!"); 
    aForm.pic1name.focus(); 
    return false; 
      } 
      if(!(((aForm.pic1name.value.toLowerCase()).indexOf(".gif") > 0) || 
      ((aForm.pic1name.value.toLowerCase()).indexOf(".jpg") > 0 ) || 
      ((aForm.pic1name.value.toLowerCase()).indexOf(".jpeg") > 0 ) || 
      ((aForm.pic1name.value.toLowerCase()).indexOf(".bmp") > 0 )))
      {
    alert("格式不对")
    return false;
      }
      else
      {
    var img=new Image();
    img.src=document.aForm.pic1name.value;
    fsize=img.fileSize/1024;
    fsize=fsize.toFixed(1);
    alert(fsize);
    return false;
      }

    </script>
    <%
    if not session("checklogin") then
      session("httpadd")="http://"&request.servervariables("SERVER_NAME")&request("url")
      response.redirect "../register/login.asp"
    end if
    save=request("save")
    %>
    <body>
    <%if save=0 then%>
    <form name="aForm" action="savepic.asp" method="post" enctype="multipart/form-data">
    <p class="unna"> 图片文件 <input type="file" name="pic1name"> 
     &nbsp;<input type="submit" name="button" value=" 上传 " onclick="return(JudgeKeyword(aForm))">
    </form>   
    <%else%>
    <center><p align="center" style="font-size:9pt"><a href="javascript:re()">图片上传成功,请关闭本窗口!</a></center>
    <%end if%>  
    请问如何可以实现我楼顶上面的那个效果,因为现在的就是第一次点击上传出现的是-0.0,第二次才是真实的数值,但这个我只是测试一下,我真正的目的是让他上传上去,而且能够控制上传图片的大小.