如题,我想<input type="file" id="file" oncchange="check()">要一个check()函数的代码,能获取上传文件的大小,这样我就能在客户端判断上传文件是否超过最大值。要IE8能用的。我在google上找到一段代码,但在IE8上是不可用的,我设置过“对为标记为安全的ActiveX空间的初始化并可执行”为启动,在IE6上可用。以下是我找的代码:
function getFileSize(fileObj) { 
if (document.all) { 
window.oldOnError = window.onerror; 
window.onerror = function(err) { 
if (err.indexOf('utomation') != -1) { 
alert('No access to the file permissions.'); 
return true; 

else 
return false; 
}; 
var fso = new ActiveXObject('Scripting.FileSystemObject'); 
var file = fso.GetFile(fileName); 
window.onerror = window.oldOnError; 
return file.Size; 

} 我发现126邮箱里添加附件,就可以获取文件大小,但是找不到那段js代码。请大侠们帮帮忙吧!
当然,有自己的解决办法也可以。附:本来我可以将IE8换成IE6,但是后来一想,难道别个为了用我的程序还得装个IE6,那不是太搞笑了,而且google了那么多页,都是千篇一律,希望能在这里找到一个不错的解决方法

解决方案 »

  1.   

    越高版本的浏览器的安全越高,ActiveX基本都不是默认支持的对象了
      

  2.   

    就是啊,但是网易啊,腾讯等等页面的上传文件input都可以获取文件大小,我们肯定可以,只是不知道用什么办法。
      

  3.   

    在网上还找到一段代码,还以为可以呢,结果还是不行。
    function getFileSize(filePath) { 
    var image=new Image(); 
    image.dynsrc=filePath; 
    alert(image.fileSize); 

    IE8报错,出错信息:
    无法设置dynsrc属性,拒绝访问。
      

  4.   

    这段代码也不行:
    objstream.type = 1;
    objstream.open();
    objstream.loadfromfile(strfilename);
    alert(objstream.size);IE8上提示出错:
    不能访问其他域的数据源。我也是将“对为标记为安全的ActiveX空间的初始化并可执行”为启动。不行啊吧!!!
      

  5.   


    JS判断上传文件大小<input type="file" id="fileText">    
    <input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">   
      
      
    <script type="text/javascript">   
    var  Sys = {};   
    if(navigator.userAgent.indexOf("MSIE")>0)   
    {   
        Sys.ie=true;   
    }   
    if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)   
    {   
        Sys.firefox=true;   
    }   
      
    function checkFileChange(obj)   
    {   
        var filesize = 0;   
           
        if(Sys.firefox)   
        {   
            filesize = obj.files[0].fileSize;   
        }else if(Sys.ie)   
        {   
            var fileobject = new ActiveXObject ("Scripting.FileSystemObject");//获取上传文件的对象   
            var file = fileobject.GetFile (document.getElementById("fileText").value);//获取上传的文件   
            var filesize = file.Size;//文件大小   
        }   
        alert(filesize);   
    }   
    </script>  
      

  6.   

    <script language="JavaScript">  
    <!--  
    function ShowSize(files)  
    {  
      var fso,f;  
      fso=new ActiveXObject("Scripting.FileSystemObject");  
      f=fso.GetFile(files);
      var fileSize = f.size ;
      if((fileSize/1024) < 1024){
        alert(fileSize/1024+"K");
      }else if( ((fileSize/1024) > 1024) && ((fileSize/(1024*1024)) < 1024)){
        alert(fileSize/(1024*1024)+"M");
      }else{
        alert(fileSize/(1024*1024*1024)+"G")
      }
    }  
    //-->  
    </script>  
      

  7.   

    方法三、
    <input type="text" size="4" value="10" name="filesizelimit" id="filesizelimit"/> k
    <input type="file" name="file1" id="file1" size="40" onchange="changesrc(this)"/>
    <img src="about:blank" id="filechecker" alt="test"  height="18"/>
        
    <script type="text/javascript">
    var ofilechecker = document.getelementbyid("filechecker");
        
    function changesrc(filepicker)
    {
        ofilechecker.src = filepicker.value;
    }
        
    ofilechecker.onreadystatechange = function ()
    {
        if (ofilechecker.readystate == "complete")
        {
            checksize();
        }
    }
        
    function checksize()
    {
        var limit  = document.getelementbyid("filesizelimit").value * 1024;
        
        if (ofilechecker.filesize > limit)
        {
            alert("too large");
        }
        else
        {
            alert("ok");
        }
    }
    </script> 
      

  8.   

     在    var fileobject = new ActiveXObject ("Scripting.FileSystemObject"); 处提示服务器不能创建对象,这是怎么回事 ?
      

  9.   

    哎呀, 我再给一个最简单的 方法,<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> 
      

  10.   

    无法设置 dynsrc 属性。 拒绝访问。
      

  11.   

    你们惑哥哥哦,<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> 
    都不行?我把它吃啦
      

  12.   

    我也记得前台不好做 最后放弃放在action进去判断了~~
      

  13.   

    woshigaoshou980大侠:你给的几种方法在IE8上都要不得哈,我早试过了。我觉得网易和腾讯都是按照下面这样实现的。好像是用ajax。不过还不会,郁闷。
      

  14.   

    使用ajax通信,放到后台去做试试
      

  15.   

    IE8现在有问题,很多在IE6、IE7上可以正常使用的JS,在IE8上都不行的。
      

  16.   

    http://xbyy123.iteye.com/blog/1140174 看看这个
      

  17.   

    http://xbyy123.iteye.com/blog/1140174 这个试试