真正好用的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 相关文章推荐
Jquery 高亮显示文本中重要的关键字
Dec 24 Javascript
UI Events 用户界面事件
Jun 27 Javascript
JavaScript中Math对象方法使用概述
Jan 02 Javascript
Bootstrap布局组件应用实例讲解
Feb 17 Javascript
JS 实现 ajax 异步浏览器兼容问题
Jan 21 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
Mar 04 Javascript
JS设计模式之单例模式(一)
Sep 29 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 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/05/10 PHP
smarty中常用方法实例总结
2015/08/07 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
用javascript实现点击链接弹出&quot;图片另存为&quot;而不是直接打开
2007/08/15 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
jquery.validate使用攻略 第一部
2010/07/01 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
生产制造追溯系统之再说条码打印
2019/06/03 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
在Python的web框架中配置app的教程
2015/04/30 Python
python简单的函数定义和用法实例
2015/05/07 Python
Python实现二叉搜索树
2016/02/03 Python
Python reduce()函数的用法小结
2017/11/15 Python
python中有函数重载吗
2020/05/28 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
Python如何合并多个字典或映射
2020/07/24 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
经典的毕业生自荐信范文
2014/04/14 职场文书
2014中考励志标语
2014/06/05 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
idea下配置tomcat避坑详解
2022/04/12 Servers