真正好用的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 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
jquery EasyUI的formatter格式化函数代码
Jan 12 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
May 05 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
jquery插件jSignature实现手动签名
May 04 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
jQuery中Find选择器用法示例
Sep 21 Javascript
让编辑器支持word复制黏贴、截屏的js代码
Oct 17 Javascript
根据Bootstrap Paginator改写的js分页插件
Dec 25 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
Apr 20 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
Aug 08 jQuery
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/09/08 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP图片库imagemagick安装方法
2014/09/23 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
webpack external模块的具体使用
2018/03/10 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
[03:00]2018完美盛典_最佳英雄奖
2018/12/17 DOTA
Python break语句详解
2014/03/11 Python
python计算时间差的方法
2015/05/20 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
Python使用uuid库生成唯一标识ID
2020/02/12 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
python 读取.nii格式图像实例
2020/07/01 Python
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
瑜伽灵感珠宝:Satya Jewelry
2018/01/06 全球购物
初中家长寄语
2014/04/02 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
Hive导入csv文件示例
2022/06/25 数据库