真正好用的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 相关文章推荐
Javascript 代码也可以变得优美的实现方法
Jun 22 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
js下将字符串当函数执行的方法
Jul 13 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
Sep 13 Javascript
jQuery中[attribute^=value]选择器用法实例
Dec 31 Javascript
JavaScript必知必会(二) null 和undefined
Jun 08 Javascript
Bootstrap框架下下拉框select搜索功能
Mar 26 Javascript
轻松掌握JavaScript策略模式
Aug 25 Javascript
利用JS判断鼠标移入元素的方向
Dec 11 Javascript
EditPlus中的正则表达式 实战(2)
Dec 15 Javascript
TypeScript入门-基本数据类型
Mar 28 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
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 第三节 变量介绍
2012/04/28 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP文件上传操作实例详解
2016/09/27 PHP
php加密解密字符串示例
2016/10/13 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
js切换div css注意的细节
2012/12/10 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
jQuery第一次运行页面默认触发点击事件的实例
2018/01/10 jQuery
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
python动态进度条的实现代码
2019/07/03 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
python、Matlab求定积分的实现
2019/11/20 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
JSF如何进行表格处理及取值
2012/08/06 面试题
金融专业毕业生推荐信
2013/11/26 职场文书
海飞丝的广告词
2014/03/20 职场文书
竞聘上岗演讲
2014/05/19 职场文书
统计专业自荐书
2014/07/06 职场文书
五年级小学生评语
2014/12/26 职场文书
2015年幼儿园中班工作总结
2015/04/25 职场文书
2015入党个人自传范文
2015/06/26 职场文书
如何在Python项目中引入日志
2021/05/31 Python
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
Golang中channel的原理解读(推荐)
2021/10/16 Golang
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python