bootstrap fileinput.js扩展-增加对文件名特殊字符过滤

来源:互联网 发布:脉冲信号 计数 单片机 编辑:程序博客网 时间:2024/05/16 03:10

在项目中使用bootstrap fileinput.js作为文件上传插件的过程中,需求提出如果文件名中包含某些特殊字符,例如¥、#等,则不允许用户上传此类文件。fileinput.js本身并不支持文件名的过滤,因此考虑对其进行扩展。具体如下:

修改fileinput.js源代码:

$.fn.fileinput.defaults中增加:

 notallowedFilenameExtensions:null,//初始化可配置限制的字符有哪些;

_readFiles方法中增加具体的判断,在var self时,增加

filenameExt=self.notallowedFilenameExtensions,//获取初始化时定义的特殊字符

在readFile=function(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:['#','%','¥','@'],//文件名中不允许出现的字符overwriteInitial:false,msgFilesTooMany:"选择上传的文件数量({n})超过允许的最大数值{m}!",dropZoneTitle:"选择目标图片,图片大小不超过2MB",maxFileSize:2000,//单位为kb,如果为0表示不限制文件大小maxFileCount:1}});

效果如下:



 
原创粉丝点击