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

在项目中使用 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

}

});

效果如下:


9531544-e506df1a11624203.png

你可能感兴趣的:(bootstrap fileinput.js扩展-增加对文件名特殊字符过滤)