限制上傳檔案大小和格式的jQuery外掛實例_jquery
May 16, 2016 pm 04:18 PM
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) {// 舊版瀏覽器
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);
$.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) {// 舊版瀏覽器
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
{
}
希望本文所述對大家的jQuery程式設計有所幫助。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章
擊敗分裂小說需要多長時間?
3 週前
By DDD
倉庫:如何復興隊友
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前
By 尊渡假赌尊渡假赌尊渡假赌
公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?
3 週前
By 王林

熱門文章標籤

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)