Node.js, проанализировать имя файла из URL-адреса

Как я могу разобрать URL?

site.com:8080/someFile.txt?attr=100

или

site.com:8080/someFile.txt/?attr=100

Мне нужно получить someFile.txt, где имя файла, которое я задал сам по себе как формат (txt или какой-то другой).

ОБНОВЛЕНИЕ

Я пробовал

var path = url.parse(req.url).path;

Но я все еще не могу получить путь (someFile.txt).

Ответ 1

Что-то вроде этого..

var url = require("url");
var path = require("path");
var parsed = url.parse("http://example.com:8080/test/someFile.txt/?attr=100");
console.log(path.basename(parsed.pathname));

Ответ 2

В вашем примере можно легко использовать Node.jss url module:

var URL = require('url').parse('site.com:8080/someFile.txt?attr=100');
console.log(URL.pathname.replace(/(^\/|\/$)/g,'')); // "someFile.txt"

Однако это не работает с Node.jss примерным URL-адресом (потому что у него больше пути).

Завершая полный путь, начинающийся с его самой правой косой черты, он даст имя файла:

var URL = require('url').parse('http://user:[email protected]m:8080/p/a/t/h?query=string#hash');
console.log(URL.pathname.substring(URL.pathname.lastIndexOf('/')+1)); // "h"

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

var file = url.substring(url.lastIndexOf('/')+1).replace(/((\?|#).*)?$/,'');
                              /* hashes and query strings ----^  */