限制上传文件大小和格式的jQuery插件实例
作者:bea
本文实例讲述了限制上传文件大小和格式的jQuery插件。分享给大家供大家参考。具体分析如下: 在客户端上传文件,通常需要限制文件的尺寸和格式,最常用的做法是使用某款插件,一些成熟的插件的确界面好看,且功能强大,但美中不足的是:有时候会碰到浏览器兼容问题。本篇就来写一个"原生态"的jQuery插件,使之能限制上传文件的大小和格式。 首先,写一个名称为checkFileTypeAndSize.js的插件。通过判断当前文件的后缀名是否被包含在预先设置所允许的后缀名数组中,来限制文件
本文实例讲述了限制上传文件大小和格式的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程序设计有所帮助。
有用 | 无用
在客户端上传文件,通常需要限制文件的尺寸和格式,最常用的做法是使用某款插件,一些成熟的插件的确界面好看,且功能强大,但美中不足的是:有时候会碰到浏览器兼容问题。本篇就来写一个"原生态"的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程序设计有所帮助。
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery+ajax实现动态执行脚本的方法
- javascript将异步校验表单改写为同步表单
- JavaScript中实现sprintf、printf函数
- javascript批量修改文件编码格式的方法
- JavaScript中的包装对象介绍
- 浅谈JSON中stringify 函数、toJosn函数和parse函数
- 浅谈JavaScript Math和Number对象
- js判断一个字符串是否包含一个子串的方法
- javascript中Object使用详解
- JQuery中的事件及动画用法实例
- javascript折半查找详解
- JavaScript数据类型检测代码分享
- 浅谈Javascript中的Function与Object
- javascript实现动态加载CSS
- 使用jQuery实现返回顶部
- SyntaxHighlighter 3.0.83使用笔记
- AngularJS iframe跨域打开内容时报错误的解决办法
- JavaScript事件委托用法分析
- jQuery统计上传文件大小的方法