限制上传文件大小和格式的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 相关文章推荐
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
JavaScript高级程序设计(第3版)学习笔记6 初识js对象
Oct 11 Javascript
js实现可折叠展开的手风琴菜单效果
Sep 07 Javascript
Jquery中巧用Ajax的beforeSend方法
Jan 20 Javascript
JavaScript基础语法之js表达式
Jun 07 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
jQuery ready()和onload的加载耗时分析
Sep 08 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
Node.js学习教程之Module模块
Sep 03 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
Jul 24 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
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
PHP写的求多项式导数的函数代码
2012/07/04 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
javascript中字符串的定义示例代码
2013/12/19 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
又一款js时钟!transform实现时钟效果
2016/08/15 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
tracking.js页面人脸识别插件使用方法
2020/04/16 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
python同时遍历两个list用法说明
2020/05/02 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
三八节主持词
2014/03/17 职场文书
高中生操行评语
2014/04/25 职场文书
走进敬老院活动总结
2014/07/10 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
2015年人事科工作总结
2015/04/28 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
python lambda 表达式形式分析
2022/04/03 Python