在項目中使用 bootstrap fileinput.js
作為文件上傳插件的過程中幔亥,需求提出如果文件名中包含某些特殊字符予借,例如¥宇姚、#等尝哆,則不允許用戶上傳此類文件秉撇。 fileinput.js
本身并不支持文件名的過濾,因此考慮對其進行擴展秋泄。具體如下:
修改 fileinput.js
源代碼:
在 $.fn.fileinput.defaults
中增加 notallowedFilenameExtensions:null
,即初始化可配置限制的字符有哪些琐馆;
在 _readFiles
方法中增加具體的判斷,如下:
在 var self
時恒序,增加 filenameExt=self.notallowedFilenameExtensions
,//獲取初始化時定義的特殊字符
在 readFile=function(i) {}
中增加如下內(nèi)容
//當定義的特殊字符不為空時瘦麸,增加對文件名中是否包含特殊字符的判斷
if(!$h.isEmpty(filenameExt))
{
var filenamecheck=newRegExp(filenameExt.join('|'),'igm');
var checkresult=file.name.match(filenamecheck);
if(checkresult)
{
var pipeizifu=checkresult.join(',');
msg="文件名包含特殊字符"+pipeizifu+";請去掉后再次上傳";
throwError(msg,file,previewId, i);
return;
}
}
在初始化fileinput時,
$("#file-0").fileinput({
fileActionSettings:{showUpload:false,showZoom:false},
language:'zh',
showUpload:true,
showRemove:false,
uploadExtraData: {fileUseage:'0',taskType:'0'},
uploadAsync:false,//采用同步上傳
uploadUrl:'faceDetect/uploadPhoto',// you must set a valid URL here else you will get an error
/*uploadExtraData:{id: 100, value: '100 Details'},*/
allowedFileExtensions: ['jpg','png','bmp','jpeg'],
notallowedFilenameExtensions:['#','%','¥','@'],//文件名中不允許出現(xiàn)的字符
overwriteInitial:false,
msgFilesTooMany:"選擇上傳的文件數(shù)量({n})超過允許的最大數(shù)值{m}歧胁!",
dropZoneTitle:"選擇目標圖片滋饲,圖片大小不超過2MB",
maxFileSize:2000,//單位為kb,如果為0表示不限制文件大小
maxFileCount:1
}
});
效果如下:
9531544-e506df1a11624203.png