Почему все мои загрузки файлов пропускают условие else if? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть функция, которая проверяет тип файла. На этот раз я хочу проверить правильность файла и достаточный размер файла. Если расширение файла правильное, но размер файла превышает 10 МБ, тогда он должен выбросить alert(); в блоке условия else if(). Вместо этого оно пропускается.

Я тестирую его с файлом .mov размером 37,3 МБ

Что я делаю не так?

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;
}

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

На самом деле, он вводит блок "else if", только что проверил здесь . Убедитесь, что ваша среда поддерживает File Api Самый простой способ сделать это - проверить, существует ли FileReader для глобального объекта:

if (window.FileReader) {
 console.log('File API works');
}
0 голосов
/ 22 апреля 2020

file.value обычно не работает по соображениям безопасности. Используйте новый fileinput.files

Чтобы проверить тип плитки:

let file = realFileBtn.files[0];
let type = file.type; //returns the MIME Type

//Method 1
if(/(\.jpg|\.jpeg|\.png|\.bmp|\.mov|\.MOV)$/i.test(file.type)) {
  //code here
}

//Method 2
let type2=file.type.split('/')[0];
if(type2=="video" || type2=="image") {
  //code here
}

Чтобы проверить размер файла:

if(file.size<maxSize) {
  //code here
}

Подробнее о MDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...