真正好用的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 相关文章推荐
JS判断变量是否为空判断是否null
Jul 25 Javascript
javascript抽象工厂模式详细说明
Dec 16 Javascript
14个有用的Jquery技巧分享
Jan 08 Javascript
jQuery跨域问题解决方案
Aug 03 Javascript
js获取对象、数组的实际长度,元素实际个数的实现代码
Jun 08 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
JavaScript基础之流程控制语句的用法
Aug 31 Javascript
使用watch在微信小程序中实现全局状态共享
Jun 03 Javascript
Angular8基础应用之表单及其验证
Aug 11 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
Sep 28 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 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里的中文变量说明
2011/07/23 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
javascript数据类型验证方法
2015/12/31 Javascript
谈谈JavaScript数组常用方法总结
2017/01/24 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
详解mpvue scroll-view自动回弹bug解决方案
2018/10/01 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
node.js中事件触发器events的使用方法实例分析
2019/11/23 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
Python列表的切片实例讲解
2019/08/20 Python
python从Oracle读取数据生成图表
2020/10/14 Python
用python进行视频剪辑
2020/11/02 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
Etam德国:内衣精品店
2019/08/25 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
擅自离岗检讨书
2014/02/11 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
电工实训心得体会
2016/01/14 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python
MySQL数据库简介与基本操作
2022/05/30 MySQL
如何基于python实现单目三维重建详解
2022/06/25 Python
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技