Как я могу получить расширения файлов с помощью JavaScript?

Я мог запускать свой планшет (Android) и смартфон (android) в соответствии с приведенной ниже процедурой:

  • Установить приложение «GNUroot Debian»;
  • Открыть «GNUroot Debian "app;
  • Выполнить следующие команды:
    apt-get update
    apt-get install python3
    apt-get install python3-setuptools
    easy_install3 pip
    pip install django
    django-admin startproject demo
    cd demo
    python manage.py runserver
    
435
задан Ghoul Fool 20 April 2018 в 09:58
поделиться

11 ответов

Более новое Редактирование: Партии вещей изменились, так как этот вопрос был первоначально отправлен - существует большая действительно хорошая информация в пересмотренный ответ wallacer , а также превосходная разбивка VisioN

<час>

Редактирование: Просто, потому что это - принятый ответ; ответ wallacer действительно намного лучше:

return filename.split('.').pop();
<час>

Мой старый ответ:

return /[^.]+$/.exec(filename);

Должен сделать это.

Редактирование: В ответ на комментарий PhiLho, используйте что-то как:

return (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename) : undefined;
687
ответ дан 5 revs 20 April 2018 в 09:58
поделиться
function extension(fname) {
  var pos = fname.lastIndexOf(".");
  var strlen = fname.length;
  if (pos != -1 && strlen != pos + 1) {
    var ext = fname.split(".");
    var len = ext.length;
    var extension = ext[len - 1].toLowerCase();
  } else {
    extension = "No extension found";
  }
  return extension;
}

//использование

расширение ('file.jpeg')

всегда возвраты расширение понижает аварию, таким образом, можно проверить, что это на поле изменяет работы для:

файл. Файл JpEg

(никакое расширение)

файл. (noextension)

3
ответ дан Jim Blackler 20 April 2018 в 09:58
поделиться

Я просто понял, что недостаточно поместить комментарий к ответу p4bl0, хотя ответ Tom ясно решает проблему:

return filename.replace(/^.*?\.([a-zA-Z0-9]+)$/, "$1");
3
ответ дан roenving 20 April 2018 в 09:58
поделиться
  • 1
    То же здесь - создание его частный не имеет значения – Yuval Adam 6 November 2008 в 14:26
function file_get_ext(filename)
    {
    return typeof filename != "undefined" ? filename.substring(filename.lastIndexOf(".")+1, filename.length).toLowerCase() : false;
    }
8
ответ дан Joe Scylla 20 April 2018 в 09:58
поделиться
return filename.replace(/\.([a-zA-Z0-9]+)$/, "$1");

редактирование: Странно (или возможно это не), $1 во втором аргументе метода замены, кажется, не работает... Извините.

3
ответ дан p4bl0 20 April 2018 в 09:58
поделиться
function getFileExtension(filename)
{
  var ext = /^.+\.([^.]+)$/.exec(filename);
  return ext == null ? "" : ext[1];
}

Протестированный с

"a.b"     (=> "b") 
"a"       (=> "") 
".hidden" (=> "") 
""        (=> "") 
null      (=> "")  

Также

"a.b.c.d" (=> "d")
".a.b"    (=> "b")
"a..b"    (=> "b")
28
ответ дан zangw 20 April 2018 в 09:58
поделиться
var parts = filename.split('.');
return parts[parts.length-1];
8
ответ дан Randy Sugianto 'Yuku' 20 April 2018 в 09:58
поделиться
function func() {
  var val = document.frm.filename.value;
  var arr = val.split(".");
  alert(arr[arr.length - 1]);
  var arr1 = val.split("\\");
  alert(arr1[arr1.length - 2]);
  if (arr[1] == "gif" || arr[1] == "bmp" || arr[1] == "jpeg") {
    alert("this is an image file ");
  } else {
    alert("this is not an image file");
  }
}
3
ответ дан Jim Blackler 20 April 2018 в 09:58
поделиться
return filename.split('.').pop();

Не усложняйте :)

Изменить:

Это еще одно решение без регулярных выражений, которое я считаю более эффективным:

return filename.substring(filename.lastIndexOf('.')+1, filename.length) || filename;

Есть некоторые угловые случаи, с которыми лучше справиться Ответ VisioN ниже, в частности файлы без расширения ( .htaccess и т. Д.).

Он очень эффективен и обрабатывает угловые случаи, возможно, лучше, возвращая » " вместо полной строки, если перед точкой нет точки или строки. Это очень хорошо продуманное решение, хотя и трудное для чтения. Вставьте его в свою библиотеку помощников и просто используйте.

Старое редактирование:

Более безопасная реализация, если вы собираетесь столкнуться с файлами без расширения или с скрытыми файлами без расширения (см. Комментарий VisioN к Тому: s ответ выше) будет что-то вроде этих строк

var a = filename.split(".");
if( a.length === 1 || ( a[0] === "" && a.length === 2 ) ) {
    return "";
}
return a.pop();    // feel free to tack .toLowerCase() here if you want

Если a.length равно единице, это видимый файл без расширения, т.е. файл

Если a [0] === "" и a.length === 2 , это скрытый файл без расширения, т.е. .htaccess

Надеюсь, это поможет прояснить проблемы с немного более сложными случаями. Что касается производительности, я считаю, что это решение немного медленнее, чем регулярное выражение в большинстве браузеров. Однако для наиболее распространенных целей этот код должен идеально подходить.

htaccess

Надеюсь, это поможет прояснить проблемы с чуть более сложными случаями. Что касается производительности, я считаю, что это решение немного медленнее, чем регулярное выражение в большинстве браузеров. Однако для наиболее распространенных целей этот код должен идеально подходить.

htaccess

Надеюсь, это поможет прояснить проблемы с чуть более сложными случаями. Что касается производительности, я считаю, что это решение немного медленнее, чем регулярное выражение в большинстве браузеров. Однако для наиболее распространенных целей этот код должен идеально подходить.

781
ответ дан 22 November 2019 в 23:01
поделиться

В браузере существует собственный API для типов пантомимы. File.type - веб-API | MDN

к вашему сведению, если Вы хотите ограничить типы файлов для попытки загрузок accept атрибуты. Можно отфильтровать список файлов окна файла пользователя. входной тип = "файл" | MDN

-1
ответ дан 22 November 2019 в 23:01
поделиться

Я знаю, что это - старый вопрос, но я записал эту функцию с тестами для извлечения расширения файла и ее доступный с NPM, Пряжей, Битом.
, Возможно, это поможет кому-то.
https://bit.dev/joshk/jotils/get-file-extension

function getFileExtension(path: string): string {
    var regexp = /\.([0-9a-z]+)(?:[\?#]|$)/i
    var extension = path.match(regexp)
    return extension && extension[1]
}

Вы видите тесты, которые я записал здесь .

0
ответ дан 22 November 2019 в 23:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: