我想使用jQuery-Validation-Engine来验证文件输入的MIME类型。我怎么能这样做呢?
我的方法是这样的:
function checkMIME(field, rules, i, options){
var file = $("#userfile")[0].files[0];
var MimeFilter = /^(image\/bmp|image\/gif|image\/jpeg|image\/png|image\/tiff)$/i;
if (! MimeFilter.test(file.type)) {
return options.allrules.validate2fields.alertText;
}
}
感谢Kashuda
发布于 2013-06-15 23:07:58
好的,通过将这些行添加到query.validationEngine-LANG.js
中,找到了一个解决方案
"validateMIME": {
"func": function(field, rules, i, options){
//add to input tag: data-validation-engine="validate[required, custom[validateMIME[image/jpeg|image/png]]]"
var fileInput = field[0].files[0];
var MimeFilter = new RegExp(rules[3],'i');
if (fileInput) {
return MimeFilter.test(fileInput.type);
} else { return true;}
},
"alertText": "* Wrong Mime Type."
},
发布于 2013-08-30 20:41:10
通过修改代码,我实现了另一种验证File MIME类型的方法:
首先将以下代码追加到jquery.validationEngine.js文件的'_validateField‘方法中
case "checkFileType":
errorMsg = methods._checkFileType(field, rules, i, options);
break;
然后将以下代码附加到同一文件中
_checkFileType: function (field, rules, i, options) {
var uploadedFile = $(field);
if (uploadedFile) {
var extensions = rules[i + 1];
var mimeFilter = new RegExp(extensions);
if (!mimeFilter.test($(uploadedFile).val().split('.').reverse()[0])) {
return options.allrules.checkFileType.alertText;
}
}
else {
return true;
}
},
最后,将以下行附加到jquery.validationEngine-en.js文件
"checkFileType": {
"regex": "none",
"alertText": "* Wrong file Type."
},
用法:
<input type="file" name="file" id="myfile" class="validate[checkFileType[jpg|jpeg|gif|JPG|png|PNG]]"/>
发布于 2015-06-01 16:41:55
如果不需要图像,只需将此添加到jquery.validationEngine.js选项添加到输入标记:
class="validate[optional, custom[validateMIME[image/jpeg|image/png]]]"
如果是必填字段,则添加
添加到输入标签:
class="validate[required, custom[validateMIME[image/jpeg|image/png]]]"
"validateMIME": {
"func": function(field, rules, i, options){
//add to input tag: data-validation-engine="validate[required, custom[validateMIME[image/jpeg|image/png]]]"
var fileInput = field[0].files[0];
var MimeFilter = new RegExp(rules[3],'i');
if (fileInput) {
return MimeFilter.test(fileInput.type);
} else { return true;}
},
"alertText": "* Wrong Mime Type."
},
https://stackoverflow.com/questions/17097062
复制相似问题