Подтвердить что ты не робот

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

};

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

4b9b3361

Ответ 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();