真正好用的js验证上传文件大小的简单方法

 更新时间:2016年10月27日 09:22:01   投稿:jingxian  
下面小编就为大家带来一篇真正好用的js验证上传文件大小的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近使用到一个文件上传功能,发现恶意上传一个2G文件时,后台处理响应较慢,遂想到能否使用js来进行客户端的验证。但查阅网上多处资料,均使用 ActiveXObject("Scripting.FileSystemObject"); 的方法,该方法需要将Internet选项中安全级别提高,启用一个系统本身不推荐的选项,会出现如下非常不友好的提示:

所以这边并没有用到,而是寻求其他方法。

这边新的思路是img标签中的dynsrc属性。

在FireFox、Chrome浏览器中可以根据document.getElementById(“id_file”).files[0].size 获取上传文件的大小(字节数),而IE浏览器中不支持该属性,只能借助<img>标签的dynsrc属性,来间接实现获取文件的大小(但需要同意ActiveX控件的运行,但是不会引起上面的不友好、不安全的提示)。

具体方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
  <head> 
  <meta name="DEscription" contect="my code demo" /> 
  <meta name="Author" contect="Michael@www.micmiu.com" /> 
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  <title>js check file size @ www.micmiu.com</title> 
  </head> 
  <body> 
    <img id="tempimg" dynsrc="" src="" style="display:none" /> 
    <input type="file" name="file" id="fileuploade" size="40" /> 
    <input type="button" name ="check" value="checkfilesize" onclick="checkfile()"/> 
 
  </body> 
  <script type="text/javascript"> 
    var maxsize = 2*1024*1024;//2M 
    var errMsg = "上传的附件文件不能超过2M!!!"; 
    var tipMsg = "您的浏览器暂不支持计算上传文件的大小,确保上传文件不要超过2M,建议使用IE、FireFox、Chrome浏览器。"; 
    var browserCfg = {}; 
    var ua = window.navigator.userAgent; 
    if (ua.indexOf("MSIE")>=1){ 
      browserCfg.ie = true; 
    }else if(ua.indexOf("Firefox")>=1){ 
      browserCfg.firefox = true; 
    }else if(ua.indexOf("Chrome")>=1){ 
      browserCfg.chrome = true; 
    } 
    function checkfile(){ 
      try{ 
        var obj_file = document.getElementById("fileuploade"); 
        if(obj_file.value==""){ 
          alert("请先选择上传文件"); 
          return; 
        } 
        var filesize = 0; 
        if(browserCfg.firefox || browserCfg.chrome ){ 
          filesize = obj_file.files[0].size; 
        }else if(browserCfg.ie){ 
          var obj_img = document.getElementById('tempimg'); 
          obj_img.dynsrc=obj_file.value; 
          filesize = obj_img.fileSize; 
        }else{ 
          alert(tipMsg); 
        return; 
        } 
        if(filesize==-1){ 
          alert(tipMsg); 
          return; 
        }else if(filesize>maxsize){ 
          alert(errMsg); 
          return; 
        }else{ 
          alert("文件大小符合要求"); 
          return; 
        } 
      }catch(e){ 
        alert(e); 
      } 
    } 
  </script> 
</html> 

以上就是小编为大家带来的真正好用的js验证上传文件大小的简单方法全部内容了,希望大家多多支持脚本之家~

相关文章

  • JS验证邮件地址格式方法小结

    JS验证邮件地址格式方法小结

    这篇文章主要介绍了JS验证邮件地址格式方法,结合两个实例形式分析了JavaScript基于正则表达式进行邮件格式验证的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-12-12
  • js设置文字颜色的方法示例

    js设置文字颜色的方法示例

    这篇文章主要介绍了js设置文字颜色的方法,涉及JS页面元素样式操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • JS与jQ读取xml文件的方法

    JS与jQ读取xml文件的方法

    本文通过代码实例给大家讲解js读取xml文件及jq读取xml文件的方法,对本文感兴趣的朋友一起学习吧
    2015-12-12
  • Babel转译失败的常见原因及解决方案

    Babel转译失败的常见原因及解决方案

    Babel是一个JavaScript编译器,用于将现代JavaScript代码转换为兼容旧版浏览器和运行环境的JavaScript代码,然而,在项目中使用Babel进行转译时,有时会遇到转译失败的问题,本文将详细分析Babel转译失败的常见原因,并提供相应的解决方案,需要的朋友可以参考下
    2025-02-02
  • JavaScript改变this指向的四种方法(bind、call、apply 和箭头函数)

    JavaScript改变this指向的四种方法(bind、call、apply 和箭头函数)

    JavaScript中的this是一个非常重要且容易困惑的概念,主要用于引用执行上下文,然而,this的指向经常因为不同的执行环境而改变,为了解决这个问题,JavaScript提供了多种方法来明确指定this的指向,本文将详细介绍JavaScript中常用的四种改变this指向的方法
    2025-03-03
  • 微信小程序入门教程

    微信小程序入门教程

    本篇文章主要介绍了微信小程序入门教程,现在分享给大家,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-11-11
  • layui实现登陆界面验证码

    layui实现登陆界面验证码

    这篇文章主要为大家详细介绍了layui实现登陆界面验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • JS实现随机生成字符串(可指定长度)的示例代码

    JS实现随机生成字符串(可指定长度)的示例代码

    本文主要介绍了JS实现随机生成字符串(可指定长度)的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • javascript 动态生成css代码的两种方法

    javascript 动态生成css代码的两种方法

    这篇文章主要介绍了javascript 动态生成css代码的两种方法,有时候我们需要利用js来动态生成页面上style标签中的css代码,下面就给大家介绍两种方法,需要的朋友可以参考下
    2017-03-03
  • two.js之实现动画效果示例

    two.js之实现动画效果示例

    本篇文章主要介绍了two.js之实现动画效果示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论