一个上传excel文件的功能,但是要限制大小,因为WebConfig默认上传文件不能超过4m,否则就无法显示该网页,所以希望用js获取上传文件的大小,来提示上限。可是我用的下面的方法,总是报错。
<asp:FileUpload ID="fu" runat="server" onchange="chksize(this.value)" />
 <script type="text/javascript">
        function chksize(strFileName) {
                var maxsize = 100;     //定义允许文件的大小,单位KB
                var objStream = new ActiveXObject("ADODB.Stream");
                objStream.Type = 1;
                objStream.Open();
                objStream.LoadFromFile(strFileName);
                if (Math.round(objStream.Size / 1024) > maxsize) {
                    alert("抱歉!您选择的文件为 " + Math.round(objStream.Size / 1024, 2) + " KB n超过了程序" + maxsize + " KB 的限制!");
                    document.form1.reset();
                    return false;
                }
                else
                    alert("可以上传");
                  }
</script>
每次运行到new ActiveXObject那一行时,就会报错:Automation服务器不能创建对象,请问大家有啥解决的办法没?

解决方案 »

  1.   

    ActiveXObject不好。。会被用户骂的。而且好像不兼容火狐。<script type="text/javascript">
    function ChkFileSize(obj) {
                if (obj) {
                    //ie
                    if (window.navigator.userAgent.indexOf("MSIE") >= 1) 
                    {
    //var img=document.createElement("img");
    //img.src=obj.value;
    //img.fileSize;
    //alert(img.fileSize);
    //FileObj=obj;
             var ImgObj=new Image();   //建立一个图像对象
    ImgObj.src=obj.value;
    ImgObj.onreadystatechange=function(){
    if(ImgObj.readyState=="complete")
    {
    ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
    alert(ImgFileSize);
    }
    }
    document.body.removeChild(ImgObj);
                    }
                    //firefox
                    else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
                        if (obj.files) {
                         alert(obj.files.item(0).fileSize);
                        }
                        else {

                        }
                    }
                }
            }
        </script>
        <input id="File1" type="file" onchange="javascript:ChkFileSize(this)" />
      

  2.   

    <script type="text/javascript" defer>
    function crobj()
    {
      var obj=document.getElementById("path");
      var fso=new ActiveXObject("Scripting.FileSystemObject");
      var opath=fso.GetFile(obj.value);
      var s="文件大小为"+opath.size+"bytes";
      alert(s);
    }
    </script>
    <input type="file" id="path" />
    <input type="button" value="提交" onclick="crobj()"/>
      

  3.   

    <httpRuntime requestValidationMode="2.0" maxRequestLength="4096000" useFullyQualifiedRedirectUrl="true" executionTimeout="6000" minFreeThreads="8" minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>
    使用web.config限制不行吗???如上,maxRequestLength="4096000"就是限制最大上传的大小,单位是字节,需要多大的自己去算一下就行了
      

  4.   

    哦哦,不好意思lz,没看清题目要求···要是使用JS的话,就用上边的方法吧
      

  5.   


    在业务需要无需限制上传excel文件大小的情况下,3楼正解。