真正好用的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 getMonth()日期函数的值域是0-11
Feb 15 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
一个Action如何调用两个不同的方法
May 22 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
Nov 24 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 Javascript
js图片放大镜实例讲解(必看篇)
Jul 17 Javascript
基于JavaScript中字符串的match与replace方法(详解)
Dec 04 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
JavaScript switch语句使用方法简介
Dec 30 Javascript
详细分析Node.js 多进程
Jun 22 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
JS实现获取剪贴板内容的方法
2016/06/21 Javascript
js变量提升深入理解
2016/09/16 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
JS实现轮播图效果
2020/01/11 Javascript
javascript实现雪花飘落效果
2020/08/19 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
[06:23]2014DOTA2西雅图国际邀请赛 小组赛7月12日TOPPLAY
2014/07/12 DOTA
Python 文件操作实现代码
2009/10/07 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
代码中finally中的代码会不会执行
2012/02/06 面试题
班组长安全职责
2014/01/05 职场文书
优秀班干部事迹材料
2014/01/26 职场文书
三八节主持词
2014/03/17 职场文书
劳资协议书范本
2014/04/23 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
中学生自我评价2015
2015/03/03 职场文书
社区敬老月活动总结
2015/05/07 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书