Как получить имя файла javascript

Обновлено: 02.07.2024

C:\Documents and Settings\img\recycled log.jpg

В этом случае я просто хочу получить recycled log.jpg из полного пути в JavaScript.

Это будет обрабатывать оба пути \ OR / in

Не работает в MAC OSX, используя хром, экранирует символ после \ – Pankaj Phartiyal 08/01/2009

@nickf Ник, не уверен, где я ошибаюсь, но код у меня не работает, когда путь к файлу имеет одинарную косую черту. Fiddle , хотя для `\\` работает нормально. – Shubh 08/01/2009

@kooky \ в строке JavaScript всегда создает escape-символ, поэтому \n вставит новый символ строки, а любой нераспознанный escape-символ заменяется на символ после escape-символа. Следовательно, обратная косая черта в строке должна быть экранирована, а перед ней должна стоять другая обратная косая черта. Попробуйте это в JSFiddle . Вы должны были заметить , что выводимая строка не содержит какую - либо обратную косую черты. – Toothbrush 08/01/2009

Я просто хотел найти соответствующую часть в строке с регулярным выражением, как показывает Нейт, но ваше решение настолько блестящее, что я должен сказать вам спасибо. Вы просто удаляете все части перед символами \ или / вместо того, чтобы помещать вас в строку. Спасибо за идею, даже она медленнее, чем решение Нейта. – jshepherd 08/01/2009

Вы можете объяснить регулярное выражение? – lesolorzanov 08/01/2009

@nickf спасибо. Просто иногда выражение меняется в зависимости от языка. Regexper выглядит потрясающе! Рисуем диаграмму выражений! : D – lesolorzanov 08/01/2009

Ненужный escape-символ: \ / no-useless-escape – dude 08/01/2009

Работал у меня в Chrome – openwonk 08/01/2009

Просто ради производительности я проверил все приведенные здесь ответы:

И победителем становится ответ в стиле Split and Pop , спасибо bobince !

В мета-обсуждении, пожалуйста, добавьте соответствующую ссылку к другим ответам. Также было бы полезно лучше объяснить, как вы анализировали среду выполнения. – jpmc26 09/08/2014

@ Скорбь, что ссылка больше не действительна. – crthompson 09/08/2014

Если вы используете Node.js, вы можете просто использовать функцию basename : path.basename(file) – electrovir 28/06/2015

С какой платформы идет путь? Пути Windows отличаются от путей POSIX, пути отличаются от Mac OS 9, пути отличаются от путей RISC OS, отличаются .

Вы можете добавить, что в классической MacOS (<= 9) использовались разделители двоеточия (:), но я не знаю ни одного браузера, который все еще может использоваться, который не переводил пути MacOS в пути POSIX в виде файла : ///path/to/file.ext – eyelidlessness 08/01/2009

Вы можете просто использовать pop () вместо reverse () [0]. Он также изменяет исходный массив, но в вашем случае это нормально. – Chetan S 08/01/2009

Мне интересно, как мы можем создать аналог, чтобы получить именно тот путь. – Todd Horst 08/01/2009

Именование «имя листа » происходит от имени структуры каталога / файла «Дерево», первым делом дерева является корень , последними - листья => имя файла - последнее в пути к дереву => лист :-) – jave.web 08/01/2009

Ates, ваше решение не защищает от ввода пустой строки. В этом случае он не работает с TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties .

bobince, вот версия nickf, которая обрабатывает разделители путей DOS, POSIX и HFS (и пустые строки):

если мы пишем этот JS-код на PHP, нам нужно добавить один дополнительный \ для каждого \ – Lenin Raj Rajasekaran 26/06/2009

Следующая строка кода JavaScript даст вам имя файла.

Это был бы способ динамически вставлять больше разделителей в массив, если это необходимо.
Если fullPath явно задается строкой в ​​вашем коде, необходимо избегать обратной косой черты !
Нравится "C:\\Documents and Settings\\img\\recycled log.jpg"

Что касается «массива для разделения», я не вижу возможности передать массив в виде списка разделителей. Фактически, в документации говорится: «Если разделителем является массив, то этот массив приводится к String и используется в качестве разделителя». – mherzog 03/05/2019

Не более краткий, чем ответ nickf, но этот непосредственно «извлекает» ответ, вместо того, чтобы заменять ненужные части пустой строкой:

Здесь можно найти вопрос «получить имя файла без расширения», но для этого нет решения. Вот решение, модифицированное по сравнению с решением Бобби.

Современный подход - просто использовать API URL и получить свойство pathname . API преобразовывает обратную косую черту в косую черту.

Чтобы разобрать полученный %20 на пробел, просто передайте его в decodeURIComponent .

Когда пользователь выбирает файл на веб-странице, я хочу иметь возможность извлечь только имя файла.

Я пробовал использовать функцию str.search, но она перестала работать, когда имя файла примерно такое: c: \ uploads \ ilike.this.file.jpg .

Как мы можем извлечь только имя файла без расширения?

В настоящее время существует гораздо более простой способ:

Я предполагаю, что вы хотите удалить все расширения, то есть /tmp/test/somefile.tar.gz в somefile .

Прямой подход с регулярным выражением:

Альтернативный подход с использованием регулярных выражений и работы с массивами:

Я думаю, что это должно быть одной строкой для любого программиста JavaScript. Это очень простое регулярное выражение:

Сначала удалите что-нибудь до последней косой черты, если она есть.

Затем удалите что-нибудь после последнего периода, если он есть.

Это просто, это надежно, оно реализует именно то, что просили. Я что-то упускаю?

Ввод : C:\path\Filename.ext
Выходные данные : Filename

В HTML-коде установите значение File onChange следующим образом .

Предполагая, что ваш идентификатор текстового поля 'wpName' .

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

Будет выводить следующее:

  • Файл с именем 'testcase1' имеет расширение: 'jpeg' находится в каталоге: 'C: \ blabla \ blaeobuaeu'
  • Файл с именем 'testcase2' имеет расширение: 'png' находится в каталоге: '/ tmp / blabla'
  • Файл с именем 'testcase3' имеет расширение: 'htm' находится в каталоге: ''
  • Каталог с именем 'Testcase4' имеет расширение: '' находится в каталоге: 'C:'
  • Каталог с именем 'fileWithoutDots' имеет расширение: '' находится в каталоге: '/dir.with.dots'
  • Каталог с именем '' имеет расширение: '' находится в каталоге: '/dir.with.dots/another.dir'

С && nOffset+1 === str.length добавленным к isDirectory :

  • Файл с именем 'testcase1' имеет расширение: 'jpeg' находится в каталоге: 'C: \ blabla \ blaeobuaeu'
  • Файл с именем 'testcase2' имеет расширение: 'png' находится в каталоге: '/ tmp / blabla'
  • Файл с именем 'testcase3' имеет расширение: 'htm' находится в каталоге: ''
  • Каталог с именем 'Testcase4' имеет расширение: '' находится в каталоге: 'C:'
  • Каталог с именем 'fileWithoutDots' имеет расширение: '' находится в каталоге: '/dir.with.dots'
  • Каталог с именем '' имеет расширение: '' находится в каталоге: '/dir.with.dots/another.dir'

Учитывая тестовые случаи, вы можете видеть, что эта функция работает достаточно надежно по сравнению с другими предлагаемыми здесь методами.

Примечание для новичков о том, что \\: \ является escape-символом, например, \ n означает перевод строки и \ t символ табуляции. Чтобы можно было написать \ n, вы должны ввести \\ n.

Есть ли способ получить последнее значение (на основе символа'\') из полного пути?

C:\Documents and Settings\img\recycled log.jpg

В этом случае я просто хочу получить recycled log.jpg из полного пути в JavaScript.

Возможный Дубликат : Как получить имя файла из полного пути с помощью PHP? путь к файлу : users_gallery/2012/August/14-August-2012/8/Sasasas/b_80.27016000 134489509114 08 2012kites-4v.jpg У меня есть какой нибудь способ вынуть имя файла: b_80.27016000 134489509114 08 2012kites-4v.jpg

Я пытаюсь получить имя файла из полного пути к параметру функции в моем bashrc. Я не знаю никаких регулярных выражений, так что я немного заблудился. Я знаю, что хочу получить последний прямой Слэш и использовать все после этого, но я не совсем уверен, как это сделать. Затем я хочу сохранить его в.

Это будет обрабатывать оба пути \ OR / in

Просто ради производительности я проверил все ответы, приведенные здесь:

И победителем становится ответ в стиле Сплит и поп , благодаря bobince !

Мне нужно получить имя файла из его полного пути в vc++. Как я могу получить это? Мне нужно только имя файла. Могу ли я использовать метод разделения, чтобы получить это? Если нет, то как я могу получить имя файла из полного пути к файлу?

Мне нужно разобрать имя файла и путь к файлу из полного пути с помощью запроса SQL. Например, Fullpath - \SERVER\D$\EXPORTFILES\EXPORT001.csv FileName Path EXPORT001.csv \\SERVER\D$\EXPORTFILES\

На какой платформе делает путь взялся? Пути Windows отличаются от POSIX нас разные пути с Mac OS 9 пути отличаются от путей РИНЦ ОС разные.

Если это веб-приложение, где имя файла может поступать с разных платформ, то единого решения нет. Однако разумным ударом является использование как ' \ '(Windows), так и ' / ' (Linux/Unix/Mac, а также альтернативы на Windows) в качестве разделителей путей. Вот версия без RegExp для дополнительного удовольствия:

Ates, ваше решение не защищает от пустой строки в качестве входных данных. В этом случае он терпит неудачу с TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties .

bobince, вот версия nickf, которая обрабатывает разделители путей DOS, POSIX и HFS (и пустые строки):

Следующая строка кода JavaScript даст вам имя файла.

Не более лаконичный , чем ответ никфа, но этот прямо "extracts" ответ вместо замены ненужных частей пустой строкой:

Вопрос, задающий "get file name without extension", относится сюда, но никакого решения для этого нет. Вот решение, модифицированное из решения Бобби.

Здесь у нас есть регулярное выражение с классом символов
Эти два символа должны быть экранированы с помощью '\'

Это был бы способ динамически вставлять больше разделителей в массив, если это необходимо.
Если fullPath явно задан строкой в вашем коде, то он должен экранировать обратную косую черту !
Как "C:\\Documents and Settings\\img\\recycled log.jpg"

Он заменяет последний \ , поэтому он также работает с папками.

Небольшая функция для включения в ваш проект для определения имени файла из полного пути для Windows, а также GNU/Linux & UNIX абсолютных путей.

Полный ответ таков:

Успешно скрипт для вашего вопроса, полный тест

Это решение гораздо проще и универсальнее, как для 'file name', так и для 'path'.

var file_name = file_path.substring(file_path.lastIndexOf('/'));

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

я хочу показать имя файла из полного пути. я получаю полный путь, но не знаю, как получить это имя файла с расширением? пожалуйста, покажите мне на каком-нибудь примере. код, который я использую.

Как получить имя папки из полного пути приложения? Это путь к файлу ниже, c:\projects\root\wsdlproj\devlop\beta2\text Здесь text-это имя папки. Как я могу получить это имя папки из этого пути?

Возможный Дубликат : Как получить имя файла из полного пути с помощью PHP? путь к файлу : users_gallery/2012/August/14-August-2012/8/Sasasas/b_80.27016000 134489509114 08 2012kites-4v.jpg У меня.

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

Мне нужно получить имя файла из его полного пути в vc++. Как я могу получить это? Мне нужно только имя файла. Могу ли я использовать метод разделения, чтобы получить это? Если нет, то как я могу.

Мне нужно разобрать имя файла и путь к файлу из полного пути с помощью запроса SQL. Например, Fullpath - \SERVER\D$\EXPORTFILES\EXPORT001.csv FileName Path EXPORT001.csv \\SERVER\D$\EXPORTFILES\

Я создаю программу для хранения данных из excel файлов в базе данных. Я хотел бы, чтобы пользователь дал в консоли полный путь к файлу и после того, как программа возьмет только имя файла, чтобы.

Мнение о том, что JavaScript не умеет взаимодействовать с файловой системой, является не совсем верным. Скорее, речь идет о том, что это взаимодействие существенно ограничено по сравнению с серверными языками программирования, такими как Node.js или PHP. Тем не менее, JavaScript умеет как получать (принимать), так и создавать некоторые типы файлов и успешно обрабатывать их нативными средствами.

В этой статье мы создадим три небольших проекта:

  • Реализуем получение и обработку изображений, аудио, видео и текста в формате txt и pdf
  • Создадим генератор JSON-файлов
  • Напишем две программы: одна будет формировать вопросы (в формате JSON), а другая использовать их для создания теста

Получаем и обрабатываем файлы

Для начала создадим директорию, в которой будут храниться наши проекты. Назовем ее «Work-With-Files-in-JavaScript» или как Вам будет угодно.

В этой директории создадим папку для первого проекта. Назовем ее «File-Reader».

Создаем в ней файл «index.html» следующего содержания:


Здесь мы имеем контейнер-файлоприемник и инпут с типом «file» (для получения файла; мы будем работать с одиночными файлами; для получения нескольких файлов инпуту следует добавить атрибут «multiple»), который будет спрятан под контейнером.

Стили можно подключить отдельным файлом или в теге «style» внутри head:


Можете сделать дизайн по своему вкусу.

Не забываем подключить скрипт либо в head с атрибутом «defer» (нам нужно дождаться отрисовки (рендеринга) DOM; можно, конечно, сделать это в скрипте через обработку события «load» или «DOMContentLoaded» объекта «window», но defer намного короче), либо перед закрывающим тегом «body» (тогда не нужен ни атрибут, ни обработчик). Лично я предпочитаю первый вариант.

Откроем index.html в браузере:


Прежде чем переходить к написанию скрипта, следует подготовить файлы для приложения: нам потребуется изображение, аудио, видео, текст в формате txt, pdf и любом другом, например, doc. Можете использовать мою коллекцию или собрать свою.

Нам часто придется обращаться к объектам «document» и «document.body», а также несколько раз выводить результаты в консоль, поэтому предлагаю обернуть наш код в такое IIFE (это не обязательно):


Первым делом объявляем переменные для файлоприемника, инпута и файла (последний не инициализируем, поскольку его значение зависит от способа передачи — через клик по инпуту или бросание (drop) в файлоприемник):

Отключаем обработку событий «dragover» и «drop» браузером:


Для того, чтобы понять, зачем мы это сделали, попробуйте перенести изображение или другой файл в браузер и посмотрите, что произойдет. А происходит автоматическая обработка файлов, т.е. то, что мы собираемся реализовать самостоятельно в познавательных целях.

Обрабатываем бросание файла в файлоприемник:


Мы только что реализовали простейший механизм «dran'n'drop».

Обрабатываем клик по файлоприемнику (делегируем клик инпуту):


Приступаем к обработке файла:


Удаляем файлоприемник и инпут:


Способ обработки файла зависит от его типа:


Мы не будем работать с html, css и js-файлами, поэтому запрещаем их обработку:


Мы также не будем работать с MS-файлами (имеющими MIME-тип «application/msword», «application/vnd.ms-excel» и т.д.), поскольку их невозможно обработать нативными средствами. Все способы обработки таких файлов, предлагаемые на StackOverflow и других ресурсах, сводятся либо к конвертации в другие форматы с помощью различных библиотек, либо к использованию viewer'ов от Google и Microsoft, которые не хотят работать с файловой системой и localhost. Вместе с тем, тип pdf-файлов также начинается с «application», поэтому такие файлы мы будем обрабатывать отдельно:


Для остальных файлов получаем их «групповой» тип:


Посредством switch..case определяем конкретную функцию обработки файла:

Читайте также: