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

Как вытащить имя файла из URL-адреса, используя javascript/jquery?

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

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

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

4b9b3361

Ответ 1

var index = yourstring.lastIndexOf("/") + 1;
var filename = yourstring.substr(index);

Ответ 2

Более короткий путь

var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1);

Ответ 3

var filename = url.match(/.*\/(.*)$/)[1];

Ответ 4

Я бы использовал регулярное выражение.

[^/]*$

Он выбирает все после последней косой черты до конца. Вы можете развернуть его, чтобы выбрать расширение отдельно:

/([^/]*?)(\.[^\./]*)?$

Ответ 5

var path = window.location.pathname;
var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];

Используйте это в случае, если вы не хотите, чтобы строка запроса была частью вашего имени файла (чего вы, вероятно, нет).

Ответ 6

var filename= url.split('/').pop()

Ответ 7

var URL = window.location.pathname; // Gets page name
var page = URL.substring(URL.lastIndexOf('/') + 1);  
alert(page);

Ответ 8

// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1);

Ответ 9

Для ваших примеров поиск подстроки, вероятно, будет вашим лучшим вариантом.

Однако, если ваши URI на самом деле достаточно сложны, вы можете попробовать Стивена Левитана parseUri:

parseUri(uri).file;

Он имеет 2 режима, каждый из которых имеет свою долю причуд, поэтому проверить демо.

Ответ 10

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

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

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

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

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

Ответ 11

var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0];

Ответ 12

    var pathnameArray = window.location.pathname.split("/");
    var nameOfFile = pathnameArray[pathnameArray.length -1];

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

Ответ 13

спасибо sam deng, похоже, работает, но у вас есть опечатка моего друга:

// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(filePath.lastIndexOf("/") + 1);

Ответ 14

Если 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;