JQuery найти расширение файла (из строки)

Мне было интересно, удалось ли jQuery найти расширение файла на основе возвращаемой строки?

Имя файла (string) будет передано функции (openFile), и я хотел, чтобы эта функция выполняла разные вещи в зависимости от того, какой файл был передан, это могут быть файлы изображений или файлы PDF.

function openFile(file) { 

  //if .jpg/.gif/.png do something

  //if .zip/.rar do something else

  //if .pdf do something else

};

Я искал что-то, что найдет расширение файла, но я ничего не могу найти.

Ответ 1

Как насчет чего-то подобного.

Проверьте пример live: http://jsfiddle.net/6hBZU/1/

Предполагается, что строка всегда будет заканчиваться расширением:

function openFile(file) {
    var extension = file.substr( (file.lastIndexOf('.') +1) );
    switch(extension) {
        case 'jpg':
        case 'png':
        case 'gif':
            alert('was jpg png gif');  // There was a typo in the example where
        break;                         // the alert ended with pdf instead of gif.
        case 'zip':
        case 'rar':
            alert('was zip rar');
        break;
        case 'pdf':
            alert('was pdf');
        break;
        default:
            alert('who knows');
    }
};

openFile("somestring.png");

EDIT: я ошибочно удалил часть строки в openFile("somestring.png");. Исправленный. Если бы это было в Живом примере, тем не менее.

Ответ 2

Чтобы получить расширение файла, я бы сделал следующее:

var ext = file.split('.').pop();

Ответ 3

Еще один способ написать:

function getExtension(filename) {
    return filename.split('.').pop().toLowerCase();
}

function openFile(file) { 
    switch(getExtension(file)) {
        //if .jpg/.gif/.png do something
        case 'jpg': case 'gif': case 'png':
            /* handle */
            break;
        //if .zip/.rar do something else
        case 'zip': case 'rar':
            /* handle */
            break;

        //if .pdf do something else
        case 'pdf':
            /* handle */
            break;
    }
}

Ответ 4

Вы можете использовать комбинацию подстрока и LastIndexOf

Пример

var fileName = "test.jpg";
var fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1); 

Ответ 5

Поскольку расширение всегда будет строкой после периода в полном/частичном имени файла, просто используйте встроенную функцию split в js и протестируйте результирующее расширение для того, что вы хотите сделать. Если split возвращает только одну часть/без фрагментов, она не содержит расширения.

Ответ 6

Попробуйте следующее:

var extension = fileString.substring(fileString.lastIndexOf('.') + 1);

Ответ 7

var fileName = 'file.txt';

// Getting Extension

var ext = fileName.split('.')[1];

// OR

var ext = fileName.split('.').pop();