发布网友 发布时间:2022-04-26 17:58
共1个回答
热心网友 时间:2023-05-28 19:08
在项目中使用bootstrap fileinput.js作为文件上传插件的过程中,需求提出如果文件名中包含某些特殊字符,例如¥、#等,则不允许用户上传此类文件。fileinput.js本身并不支持文件名的过滤,因此考虑对其进行扩展。具体如下:
修改fileinput.js源代码:
$.fn.fileinput.defaults中增加:
[html] view plain copy
<code class="language-html"></code>
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}});