我在使用magento form validator验证文件时遇到问题,
我有像这样的文件大小的自定义验证码。
Validation.add('validate-filesize', 'Upload file should be less than 2MB',function(v,elem) {
var file = elem.files;
var fileSize = file[0].size;
if(fileSize <= 2000000){
return true;
}
else{
return false;
}
});
在我的表单中有两个文件结构。
以上验证码适用于此字段。
<input type="file" id="file1" name="file1" value="" class="input-text required-entry validate-filesize">
但未能验证以下字段
<input type="file" id="file2" name="file2" value="" class="input-text validate-filesize">
答案 0 :(得分:0)
错误不在于库,而在于验证器回调函数。
您正在使用以下代码检查文件的大小
var fileSize = file[0].size
但是当用户没有上传任何文件时,变量file[0]
为undefined
。因此,当您执行file[0].size
时,会抛出错误Cannot read property 'size' of undefined
。这就是为什么进一步处理代码会停止并且没有得到所需信息的原因。
这样做的好方法是检查用户是否在检查文件大小之前上传了任何文件,如上所述。
var file = elem.files;
if(file.length == 0) return true; // all is good if user didn't upload any file
//go ahead with the rest of the code otherwise
var fileSize = file[0].size;
if(fileSize <= 2000000){
return true;
}
else{
return false;
}