我在 magento 1 中面临文件验证大小的问题
I am facing Issue in size of file Validation in magento 1
我在 magento 表单验证器中验证文件时遇到问题,
我有这样的文件大小自定义验证码。
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">
错误不在库中,而是在您的验证器回调函数中。
您正在使用以下代码检查文件的大小
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;
}
我在 magento 表单验证器中验证文件时遇到问题,
我有这样的文件大小自定义验证码。
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">
错误不在库中,而是在您的验证器回调函数中。
您正在使用以下代码检查文件的大小
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;
}