服务器上传文件格式限制修改,限制上传文件大小和格式的jQuery插件实例

本文实例讲述了限制上传文件大小和格式的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);

在客户端的调用变得非常简单。

复制代码 代码如下:

@section scripts

{

$(function() {

$('#f').checkFileTypeAndSize({

allowedExtensions: ['jpg'],

maxSize: 10,

success: function() {

alert('ok');

},

extensionerror: function() {

alert('允许的格式为:jpg');

return;

},

sizeerror: function() {

alert('最大尺寸10kb');

return;

}

});

});

}

希望本文所述对大家的jQuery程序设计有所帮助。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值