jQuery проверить, что загрузка файла - это mp3

82
7

Используя регулярное выражение, чтобы убедиться, что файл, загружаемый через input[type="file"] является MP3. Что-то не так, файлы, которые я тестирую, не проходят.

Спасибо за вашу помощь!

HTML

<input type="file"/>

JavaScript

var file = $input.find('input[type="file"]'),
val = file.val(),
type = /^([a-zA-Z0-9_-]+)(\.mp3)$/;

submit.attr('disabled', 'disabled').addClass('deac');

if (!val){

modal("The upload can't be empty.", true);
} else if (!type.test(val)){

modal("The song must be in MP3 format.", true);

/***********
*
* Getting caught here- even with a valid .mp3 file that _should_ pass the regex
* in my test case using mamp as a localhost, val = C:\fakepath\1.mp3
*
***********/
} else {

/* Success */
}

спросил(а) 2013-03-30T02:04:00+04:00 7 лет, 8 месяцев назад
1
Решение
116

Я думаю, что IE - единственный браузер, который добавляет что-то вроде префикса "fakepath", поэтому что-то вроде этого может работать лучше:

type = /^(?:[A-Z]:\\fakepath\\)?([a-zA-Z0-9_-]+)(\.[Mm][Pp]3)$/;

ответил(а) 2013-03-30T02:43:00+04:00 7 лет, 8 месяцев назад
58

Я считаю, что лучшим решением является использование метода mime().


Таким образом, даже если файл переименован с помощью. Mp3 не обходит контроль.

ответил(а) 2013-03-30T02:12:00+04:00 7 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема