真正好用的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 EasyUI API 中文文档 - TimeSpinner时间微调器
Oct 23 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
Oct 27 Javascript
基于jQuery实现模拟页面加载进度条
Apr 01 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
Oct 23 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 Javascript
实用jquery操作表单元素的简单代码
Jul 04 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
vue + socket.io实现一个简易聊天室示例代码
Mar 06 Javascript
详解angular2 控制视图的封装模式
Dec 27 Javascript
vue v-for 使用问题整理小结
Aug 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
PHP线程的内存回收问题
2016/07/08 PHP
PHP基本语法实例总结
2016/09/09 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
jQuery 源码分析笔记(2) 变量列表
2011/05/28 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
Python入门篇之对象类型
2014/10/17 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
Anaconda2 5.2.0安装使用图文教程
2018/09/19 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
解决Mac下使用python的坑
2019/08/13 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
德国网上超市:myTime.de
2019/08/26 全球购物
内科护士实习自我鉴定
2013/10/17 职场文书
白酒市场营销方案
2014/02/25 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
农业生产宣传标语
2014/10/08 职场文书
工作经验交流材料
2014/12/30 职场文书
公司表扬信格式
2015/05/04 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
mysql 获取相邻数据项
2022/05/11 MySQL