限制上传文件大小和格式的jQuery插件实例


Posted in Javascript onJanuary 24, 2015

本文实例讲述了限制上传文件大小和格式的jQuery插件。分享给大家供大家参考。具体分析如下:

在客户端上传文件,通常需要限制文件的尺寸和格式,最常用的做法是使用某款插件,一些成熟的插件的确界面好看,且功能强大,但美中不足的是:有时候会碰到浏览器兼容问题。本篇就来写一个"原生态"的jQuery插件,使之能限制上传文件的大小和格式。

首先,写一个名称为checkFileTypeAndSize.js的插件。通过判断当前文件的后缀名是否被包含在预先设置所允许的后缀名数组中,来限制文件格式;通过判断当前文件在IE以及其它浏览器下的尺寸是否大于预先设置所允许的最大文件尺寸,来限制文件大小;并提供格式错误、超过限制大小以及符合条件的回调函数。

(function ($) {

    $.fn.checkFileTypeAndSize = function (options) {

        //默认设置

        var defaults = {

            allowedExtensions: [],

            maxSize: 1024, //单位是KB,默认最大文件尺寸1MB=1024KB

            success: function () { },

            extensionerror: function () { },

            sizeerror: function () { }

        };

        //合并设置

        options = $.extend(defaults, options);

        //遍历元素

        return this.each(function () {

            $(this).on('change', function () {

                //获取文件路径

                var filePath = $(this).val();

                //小写字母的文件路径

                var fileLowerPath = filePath.toLowerCase();

                //获取文件的后缀名

                var extension = fileLowerPath.substring(fileLowerPath.lastIndexOf('.') + 1);

                //判断后缀名是否包含在预先设置的、所允许的后缀名数组中

                if ($.inArray(extension, options.allowedExtensions) == -1) {

                    options.extensionerror();

                    $(this).focus();

                } else {

                    try {

                        var size = 0;

                        if ($.browser.msie) {//ie旧版浏览器

                            var fileMgr = new ActiveXObject("Scripting.FileSystemObject");

                            var fileObj = fileMgr.getFile(filePath);

                            size = fileObj.size; //byte

                            size = size / 1024;//kb

                            //size = size / 1024;//mb

                        } else {//其它浏览器

                            size = $(this)[0].files[0].size;//byte

                            size = size / 1024;//kb

                            //size = size / 1024;//mb

                        }

                        if (size > options.maxSize) {

                            options.sizeerror();

                        } else {

                            options.success();

                        }

                    } catch (e) {

                        alert("错误:" + e);

                    }

                }

            });

        });

    };

})(jQuery);

在客户端的调用变得非常简单。

<input type="file" name="f" id="f"/>

@section scripts

{

    <script src="~/Scripts/checkFileTypeAndSize.js"></script>

    <script type="text/javascript">

        $(function() {

            $('#f').checkFileTypeAndSize({

                allowedExtensions: ['jpg'],

                maxSize: 10,

                success: function() {

                    alert('ok');

                },

                extensionerror: function() {

                    alert('允许的格式为:jpg');

                    return;

                },

                sizeerror: function() {

                    alert('最大尺寸10kb');

                    return;

                }

            });

        });

    </script>

}

希望本文所述对大家的jQuery程序设计有所帮助。

Javascript 相关文章推荐
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
Javascript变量作用域详解
Dec 06 Javascript
js实现简单随机抽奖的方法
Jan 27 Javascript
vue.js动态数据绑定学习笔记
May 19 Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 Javascript
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
Angular动画实现的2种方式以及添加购物车动画实例代码
Aug 09 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 Javascript
编写一个javascript元循环求值器的方法
Apr 14 Javascript
vue实现短信验证码输入框
Apr 17 Javascript
jQuery将所有被选中的checkbox某个属性值连接成字符串的方法
Jan 24 #Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 #Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
Jan 23 #Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 #Javascript
You might like
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
Jquery设置attr的disabled属性控制某行显示或者隐藏
2014/09/25 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
jQuery创建DOM元素实例解析
2015/01/19 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
javaScript基础详解
2017/01/19 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
python使用post提交数据到远程url的方法
2015/04/29 Python
python基本语法练习实例
2017/09/19 Python
python3获取当前目录的实现方法
2019/07/29 Python
python 利用pyttsx3文字转语音过程详解
2019/09/25 Python
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
出生公证书
2015/01/23 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL