限制上傳文件大小和格式的jQuery插件實(shí)例
本文實(shí)例講述了限制上傳文件大小和格式的jQuery插件。分享給大家供大家參考。具體分析如下:
在客戶端上傳文件,通常需要限制文件的尺寸和格式,最常用的做法是使用某款插件,一些成熟的插件的確界面好看,且功能強(qiáng)大,但美中不足的是:有時(shí)候會(huì)碰到瀏覽器兼容問題。本篇就來寫一個(gè)"原生態(tài)"的jQuery插件,使之能限制上傳文件的大小和格式。
首先,寫一個(gè)名稱為checkFileTypeAndSize.js的插件。通過判斷當(dāng)前文件的后綴名是否被包含在預(yù)先設(shè)置所允許的后綴名數(shù)組中,來限制文件格式;通過判斷當(dāng)前文件在IE以及其它瀏覽器下的尺寸是否大于預(yù)先設(shè)置所允許的最大文件尺寸,來限制文件大?。徊⑻峁└袷藉e(cuò)誤、超過限制大小以及符合條件的回調(diào)函數(shù)。
$.fn.checkFileTypeAndSize = function (options) {
//默認(rèn)設(shè)置
var defaults = {
allowedExtensions: [],
maxSize: 1024, //單位是KB,默認(rèn)最大文件尺寸1MB=1024KB
success: function () { },
extensionerror: function () { },
sizeerror: function () { }
};
//合并設(shè)置
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);
//判斷后綴名是否包含在預(yù)先設(shè)置的、所允許的后綴名數(shù)組中
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("錯(cuò)誤:" + e);
}
}
});
});
};
})(jQuery);
在客戶端的調(diào)用變得非常簡(jiǎn)單。
@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>
}
希望本文所述對(duì)大家的jQuery程序設(shè)計(jì)有所幫助。
- jquery實(shí)現(xiàn)上傳文件大小類型的驗(yàn)證例子(推薦)
- jQuery簡(jiǎn)單驗(yàn)證上傳文件大小及類型的方法
- jQuery統(tǒng)計(jì)上傳文件大小的方法
- jquery獲取file表單選擇文件的路徑、名字、大小、類型
- 通過jquery獲取上傳文件名稱、類型和大小的實(shí)現(xiàn)代碼
- jquery.uploadifive插件怎么解決上傳限制圖片或文件大小問題
- JQuery.uploadify 上傳文件插件的使用詳解 for ASP.NET
- 分享20多個(gè)很棒的jQuery 文件上傳插件或教程
- jquery組件WebUploader文件上傳用法詳解
- jquery檢測(cè)上傳文件大小示例
相關(guān)文章
jQuery實(shí)現(xiàn)徑向動(dòng)畫菜單效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)徑向動(dòng)畫菜單效果的相關(guān)資料,需要的朋友可以參考下2015-07-07jQuery插件簡(jiǎn)單學(xué)習(xí)實(shí)例教程
這篇文章主要介紹了jQuery插件的簡(jiǎn)單用法,列舉了分頁(yè)插件、放大鏡插件、自動(dòng)完成插件、上傳插件、日歷插件等的簡(jiǎn)單使用方法,需要的朋友可以參考下2016-07-07jQuery彈出窗口簡(jiǎn)單實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了jQuery彈出窗口的簡(jiǎn)單實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03jQuery 數(shù)據(jù)緩存模塊進(jìn)化史詳細(xì)介紹
數(shù)據(jù)緩存系統(tǒng)最早應(yīng)該是jQuery1.2引入的,那時(shí)它的事件系統(tǒng)完成照搬DE大神的addEvent.js,而addEvent在實(shí)現(xiàn)有個(gè)缺憾,它把事件的回調(diào)都放到EventTarget之上,這會(huì)引發(fā)循環(huán)引用2012-11-11