限制上传文件大小和格式的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 相关文章推荐
自己开发Dojo的建议框架
Sep 24 Javascript
JavaScript 利用Cookie记录用户登录信息
Dec 08 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
Oct 11 Javascript
Javascript中数组sort和reverse用法分析
Dec 30 Javascript
用队列模拟jquery的动画算法实例
Jan 20 Javascript
js实现格式化金额,字符,时间的方法
Feb 26 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
Jun 05 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
Oct 14 Javascript
简单实现jQuery级联菜单
Jan 09 Javascript
jQuery实现的分页功能示例
Jan 22 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
JavaScript枚举选择jquery插件代码实例
Nov 17 jQuery
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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
PHP 字符串编码截取函数(兼容utf-8和gb2312)
2009/05/02 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
一个简单的javascript类定义例子
2009/09/12 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
2014/05/20 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
vue router仿天猫底部导航栏功能
2017/10/18 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
Python中运行并行任务技巧
2015/02/26 Python
Python中的filter()函数的用法
2015/04/27 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
python 自定义装饰器实例详解
2019/07/20 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
房地产项目策划书
2014/02/05 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
运动员口号
2014/06/09 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
2014年工会工作总结
2014/11/12 职场文书
公司门卫岗位职责
2015/04/13 职场文书
小学英语教学随笔
2015/08/14 职场文书
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
MySQL的存储过程和相关函数
2022/04/26 MySQL
python使用shell脚本创建kafka连接器
2022/04/29 Python