限制上传文件大小和格式的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 相关文章推荐
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
Nov 16 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
Sep 14 Javascript
微信小程序开发之Tabbar实例详解
Jan 09 Javascript
vue 页面加载进度条组件实例
Feb 05 Javascript
页面内锚点定位及跳转方法总结(推荐)
Apr 24 Javascript
关于vue 结合原生js 解决echarts resize问题
Jul 26 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
Nov 03 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
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
YUI 读码日记之 YAHOO.util.Dom - Part.1
2008/03/22 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
js实现透明度渐变效果的方法
2015/04/10 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue路由守卫,限制前端页面访问权限的例子
2019/11/11 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
ECHT官方网站:男女健身服
2020/02/14 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
移动通信专业自荐信范文
2013/11/12 职场文书
20岁生日感言
2014/01/13 职场文书
二年级语文教学反思
2014/02/02 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
日化店促销方案
2014/03/26 职场文书
党的群众路线教育实践活动对照检查材料(四风)
2014/09/27 职场文书
民事起诉状范文
2015/05/19 职场文书
单位提档介绍信
2015/10/22 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS