客户端用javascript获取文件大小

客户端用javascript获取文件大小

1 ie实现代码如下:

<script type="text/javascript" language="javascript">

    function getFileSize(fileName)

    { 

       if(document.all)//判断是否是IE浏览器

       { 

          window.oldOnError = window.onerror;         

          window.onerror = function(err)  

          { 

              if(err.indexOf('Automation')!=-1)

              { 

                 alert('没有访问文件的权限');                 

                 return true;             

              }           

              else

              {   

                 return false;

              }         

           } 

        var fso = new ActiveXObject('Scripting.FileSystemObject'); 

        var file = fso.GetFile(fileName);         

        window.onerror = window.oldOnError; 

        return file.Size;

        }

    } 

    </script>

2 ff ie6,7,8

    function checkFileSize(){

       var agent      = window.navigator.userAgent;

       var fileupload = document.getElementById("upfile");

       var isIE7 = agent.indexOf('MSIE 7.0') != -1;

       var isIE8 = agent.indexOf('MSIE 8.0') != -1;

       var maxSize = 2000000;

       try{

       //火狐获取路径 

           if (agent.indexOf("Firefox") >= 1) {

               var fileSize = fileupload.files[0].fileSize;               

           } else if (isIE7 || isIE8) {  //IE7和IE8获得文件路径

               fileupload.select();

               filepath = document.selection.createRange().text;

               var aa = new ActiveXObject("Scripting.FileSystemObject"); 

               var fileSize = aa.GetFile(filepath).size;              

           } else { //IE6获得文件路径

               filepath = fileupload.value; 

               var aa = new ActiveXObject("Scripting.FileSystemObject"); 

               var fileSize = aa.GetFile(filepath).size;                

           } 

           if(fileSize > maxSize) {

              alert("上传文件不可超过2MB!");

              return false;

           }

       }catch(e){

           alert("请修改IE浏览器ActiveX安全设置为启用~!");

           return false;

       }    

       return true;   

    }   

 

*【常见问题】Automation 服务器不能创建对象*

【解决方法】

 第一步:浏览器-->工具-->Internet选项-->安全-->Internet的自定义级别-->安全级别设为"中",启用"对没有标记为安全的ActiveX控件进行

 

初始化和脚本运行"

 第二步:接第一步选择"受信任的站点"-->站点-->去掉要求进行"服务器验证(https:)"前面的勾,然后添加运行上面js代码的站点到受信任的区

 

域,例如:http://localhost

 另外:如果用户遇到不能修改IE中Internet选项的安全级别时,解决方法是先打开注册表编辑器,找到

 

"HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settingsones3"分支,

在右侧窗口中将"MinLevel"修改为"10000"(十六进制)后就可以在IE属性中设置较低的安全级别了。

 

亲测方案可行,但是需要做安全配置,这个对于我们程序员是可以的,当时我们不能要求用户也都像这样去设置

3 一个只是用于ie6的方法(不用安全配置)

直接上代码:

    var browser=navigator.appName;

 

    var b_version=navigator.appVersion;

 

    var version=b_version.split(";");

 

    var trim_Version=version[1].replace(/[ ]/g,"");

 

    if(browser=="Microsoft Internet Explorer" && trim_Version=="MSIE6.0"){

 

        var file = $('#file1')[0];

        var filePath = file.value;

        var image=new Image();

        image.dynsrc=filePath;

        filesize=image.fileSize;

        alert(filesize);

 

    } 

dynsrc属性只有在Ie6中适用,在以上版本中都摒弃了。

4 高级浏览器

var fileSize = document.getElementById("#file").size;

console.log(fileSize);

原文地址:https://www.cnblogs.com/lecheng/p/5917117.html