在我的web(Java)程序中,上传文本文件(不是上传图片)都要判断用户上传文件的大小,如果没有限制,用户上传一个几G的,那网速要慢死,所以我进行判断,可以在后台判断,但是我感觉这样给用户带来的休验,我决定放到客户端用JavaScript作判断!所以在这里请高手指点下,怎么实现用JavaScript判断上传文件的大小?小弟非常急。。不胜感激!!! 

解决方案 »

  1.   

    顶一个 对于web开发人员来说文件上传文件是经常遇到的,判断文件大小也是不可缺少,在这里主要介绍一下javascript判断文件大小的几种常见的方法。 第一种是应用ActiveX控件的实现,例如: Javascript代码 
    <script type="text/javascript">    
    function getFileSize(filePath)    
    {    
       var fso = new ActiveXObject("Scripting.FileSystemObject");    
       alert("文件大小为:"+fso.GetFile(filePath).size);    
    }    
    </script>    
    <body>    <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">    
    </body>  
    <script type="text/javascript">
    function getFileSize(filePath)
    {
       var fso = new ActiveXObject("Scripting.FileSystemObject");
       alert("文件大小为:"+fso.GetFile(filePath).size);
    }
    </script>
    <body>
    <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value);">
    </body>
    这种方法可以实现,也容易被开发人员想到,但是唯一不足之处是有安全提示,当然把文件名改为.hta则会屏蔽掉安全提示,但很难被需求所取。不推荐,也不多说 下面主要谈谈另一种方式,在html标签中有一个不为一般开发人员“深”知的img标签,先来说下他有的属性:src,dynsrc,start,alt,controls,loop,loopdelay,hspace,vspace....还有一些常用的属性就不列出来了,在这里我们说一下"dynsrc"这个属性:dynsrc可以用来插入各种多媒体,格式可以是Wav、Avi、AIFF、AU、MP3、Ra、Ram等等。url为音频或视频文件及其路径,可以是相对路径或绝对路径。 示例:<img dynsrc="xxxx.mp3"> 这样我们就可以根据dynsrc动态赋值任何类型文件的路径,在javascript中根据Image对象本身的fileSize属性来得到文件的大小。当然Image对象还有其他的几个属性,例如:fileCreatedDate、fileModifiedDate、fileSize、fileUpdatedDate、filters... , 代码如下: 
    Javascript代码 
    <script type="text/javascript">    
    function getFileSize(filePath)    
    {    
       var image=new Image();    
       image.dynsrc=filePath;    
       alert(image.fileSize);    
    }    
    </script>    
    <body>    
    <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">    
    </body>  
    <script type="text/javascript">
    function getFileSize(filePath)
    {
       var image=new Image();
       image.dynsrc=filePath;
       alert(image.fileSize);
    }
    </script>
    <body>
    <INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
    </body>
    文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javashl/20090306/158631.html)
      

  2.   

    <form     name="form1">   
      <input     type="file"     name="file1"     onchange="checkimage(value)">   
      </form>   
      <script     language="javascript">   
      var     img=null;   
      function     checkimage(name){   
      if(/^.+\.(gif|jpg|png)$/i.test(name))   
      {   
      if(img)img.removeNode(true);   
      img=document.createElement("img");   
      img.style.position="absolute";   
      img.style.visibility="hidden";   
      img.attachEvent("onerror",oe);   
      img.attachEvent("onreadystatechange",orsc);   
      document.body.insertAdjacentElement("beforeend",img);   
      img.src=name;   
      }   
      else{oe()}   
      }   
      function     oe(){   
      form1.reset();   
      alert("文件类型只能是<gif><jpg><png>!");   
      }   
      function     orsc(){   
      if     (img.fileSize>51200){   
      form1.reset();   
      alert("文件大小不能超过50K!");   
      }   
      }   
      </script>
      

  3.   

    img只能用在上传图片的时候用吧,可是我是上传文件,不是图片,格式是doc、ppt、xls等等,之类的,我用了ActiveXObject,可是出错,错误:“Automation 服务器不能创建对象”