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();