限制上传文件大小和格式的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 相关文章推荐
我的javascript 函数链之演变
Apr 07 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
jquery中one()方法的用法实例
Jan 16 Javascript
director.js实现前端路由使用实例
Feb 03 Javascript
javaScript基础语法介绍
Feb 28 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
Jun 01 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
Jul 29 Javascript
基于jQuery滑动杆实现购买日期选择效果
Sep 15 Javascript
js如何准确获取当前页面url网址信息
Sep 13 Javascript
总结jQuery插件开发中的一些要点
May 16 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
JavaScript ES 模块的使用
Nov 12 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
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
将php数组输出html表格的方法
2014/02/24 PHP
php判断linux下程序问题实例
2015/07/09 PHP
Node.js中使用事件发射器模式实现事件绑定详解
2014/08/15 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
webpack+express实现文件精确缓存的示例代码
2020/06/11 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python字符串循环左移
2019/03/08 Python
利用Python查看微信共同好友功能的实现代码
2019/04/24 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
np.dot()函数的用法详解
2020/01/17 Python
python实现低通滤波器代码
2020/02/26 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
python实现按日期归档文件
2021/01/30 Python
html5 canvas合成海报所遇问题及解决方案总结
2017/08/03 HTML / CSS
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
英语教育专业毕业生求职信
2014/08/28 职场文书
技术股份合作协议书
2014/10/05 职场文书
python中的装饰器该如何使用
2021/06/18 Python
mysql insert 存在即不插入语法说明
2022/03/25 MySQL