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


Posted in Javascript onOctober 27, 2016

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

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

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

这边新的思路是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验证上传文件大小的简单方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
javascript iframe跨域详解
Oct 26 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
监控微信小程序中的慢HTTP请求过程详解
Jul 05 Javascript
js实现图片实时时钟
Jan 15 Javascript
vue的props实现子组件随父组件一起变化
Oct 27 #Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 #Javascript
简单理解vue中Props属性
Oct 27 #Javascript
利用React-router+Webpack快速构建react程序
Oct 27 #Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 #Javascript
浅析如何利用JavaScript进行语音识别
Oct 27 #Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
Oct 27 #Javascript
You might like
php 用checkbox一次性删除多条记录的方法
2010/02/23 PHP
php+mysql实现无限级分类
2015/11/11 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
javascript 中null和undefined区分和比较
2017/04/19 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
2020/01/18 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中的对象,方法,类,实例,函数用法分析
2015/01/15 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
Python实现时间序列可视化的方法
2019/08/06 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
Linux文件系统类型
2012/09/16 面试题
电子专业推荐信范文
2013/11/18 职场文书
函授药学自我鉴定
2014/02/07 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
golang连接MySQl使用sqlx库
2022/04/14 Golang