真正好用的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代码编写的14条技巧
Jan 09 Javascript
jQuery实现自定义右键菜单的树状菜单效果
Sep 02 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
基于jQuery实现放大镜特效
Oct 19 Javascript
JavaScript中获取HTML元素值的三种方法
Jun 20 Javascript
JS常用知识点整理
Jan 21 Javascript
JavaScript Date对象应用实例分享
Oct 30 Javascript
vue实现图片加载完成前的loading组件方法
Feb 05 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
Element Input组件分析小结
Oct 11 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 Javascript
JavaScript鼠标悬停事件用法解析
May 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实现股票趋势图和柱形图
2015/02/07 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
React-Native中props具体使用详解
2017/09/04 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
Vue2.0 ES6语法降级ES5的操作
2020/10/30 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
Python中生成器和yield语句的用法详解
2015/04/17 Python
详解python中的json的基本使用方法
2016/12/21 Python
python获取url的返回信息方法
2018/12/17 Python
django2.0扩展用户字段示例
2019/02/13 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
三问三解心得体会
2014/09/05 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
神龙架导游词
2015/02/11 职场文书
用python实现监控视频人数统计
2021/05/21 Python
MySQL数据库如何使用Shell进行连接
2022/04/12 MySQL