Javascript 为什么我所有的文件上传都会跳过else if条件?

Javascript 为什么我所有的文件上传都会跳过else if条件?,javascript,debugging,Javascript,Debugging,我有一个函数,可以检查文件类型。这次,我想检查文件是否正确,文件大小是否足够。如果文件扩展名正确,但文件大小大于10MB,则应抛出警报()。相反,它被跳过了 我正在用37.3MB的.mov文件测试它 我做错了什么 function fileValidationWinnerPhoto() { const realFileBtn = document.getElementById("real-file"); let filePath = realFileBtn.value;

我有一个函数,可以检查文件类型。这次,我想检查文件是否正确,文件大小是否足够。如果文件扩展名正确,但文件大小大于10MB,则应抛出
警报()else if()
条件块内的code>。相反,它被跳过了

我正在用37.3MB的.mov文件测试它

我做错了什么

function fileValidationWinnerPhoto() {
    const realFileBtn = document.getElementById("real-file");
    let filePath = realFileBtn.value;
    let maxSize = 10485760;

    // Allowing file type
    let allowedExtensions = /(\.jpg|\.jpeg|\.png|\.bmp|\.mov|\.MOV)$/i;

    if (!allowedExtensions.exec(filePath)) {
        alert('Invalid file type');
        realFileBtn.value = '';
        return false;
    } else if(allowedExtensions.exec(filePath) && realFileBtn.files[0].size > maxSize) {
        alert("You have the correct file type but your uploaded file is too large!  Try uploading a file that's less than 10MB!");
        return false;
    } else {
        console.log("file accepted");
        fileAcceptedFlag = true;
    }
    return filePath;
}

出于安全原因,
file.value
通常不起作用。使用新的
fileinput.files

要检查磁贴类型,请执行以下操作:

let file=realFileBtn.files[0];
让type=file.type//返回MIME类型
//方法1
if(/(\.jpg\.jpeg\.png\.bmp\.mov\.mov)$/i.test(file.type)){
//代码在这里
}
//方法2
设type2=file.type.split('/')[0];
如果(类型2==“视频”| |类型2==“图像”){
//代码在这里
}
要检查文件大小,请执行以下操作:

if(file.size<maxSize) {
  //code here
}
if(file.size实际上,它确实进入了“elseif”块,只是选中了。
确保您的环境支持
最简单的方法是检查全局对象是否存在FileReader:

if (window.FileReader) {
 console.log('File API works');
}

!maxSize
:你确定“!”?@Pierre是的,我已经删除了它,但它仍然跳过了else if。不确定问题是什么。很酷,谢谢!
time。键入
?不理解那部分。另外,我在MDN文档中没有看到:)哦,我不小心写了
time.type
,而不是
file.type