在项目中使用 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
}
});
效果如下:

网友评论