Как вытащить имя файла из URL с помощью javascript / jquery? - PullRequest
32 голосов
/ 19 августа 2009

Определенная переменная может содержать относительный путь или абсолютный путь. В любом случае мне нужно иметь возможность извлечь имя файла из переменной:

http://www.somesite.com/dir1/dir2/filename.gif
/dir1/dir2/filename.gif

Структура каталогов также произвольна. Таким образом, в основном, учитывая любой из приведенных выше URL (со структурой каталогов arbirtrary), мне нужно вытащить «filename.gif». Заранее спасибо

Ответы [ 15 ]

1 голос
/ 25 декабря 2012
    var pathnameArray = window.location.pathname.split("/");
    var nameOfFile = pathnameArray[pathnameArray.length -1];

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

1 голос
/ 11 июня 2012

спасибо Сэм Денг, похоже, работает, но у вас есть опечатка, мой друг:

// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(filePath.lastIndexOf("/") + 1);
1 голос
/ 26 марта 2012
var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0];
1 голос
/ 20 августа 2009

Используйте регулярное выражение, что-то вроде этих строк должно помочь:

[^/]+\.[^/]+

Хотя это не охватывает все возможные случаи, оно должно быть более чем подходящим для большинства случаев. Вы можете использовать это:

var url = window.location.href;
var regex = new RegExp("[^/]+\.[^/]+");
var fileName = regex.exec(url);

Надеюсь, что поможет

0 голосов
/ 21 декабря 2012

Если ваш URL такой:

yourdomain.com/app_dev.php
yourdomain.com/app_dev.php/article/2

и вы хотите просто извлечь имя файла (/app_dev.php), чтобы вы могли ссылаться на свою домашнюю страницу, используя это:

var filename = window.location.pathname.substr(0, window.location.pathname.indexOf("/", 1));
window.location = filename;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...