Node.js,从URL解析文件名

时间:2014-11-18 23:45:23

标签: javascript node.js

如何解析网址?

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)。

3 个答案:

答案 0 :(得分:46)

像这样......

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));

答案 1 :(得分:0)

这是我的工作代码,希望对您有帮助

import path from 'path'

const getBasenameFormUrl = (urlStr) => {
    const url = new URL(urlStr)
    return path.basename(url.pathname)
}

答案 2 :(得分:-1)

您可以使用Node.js’s url module轻松处理您的示例:

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

然而,这不适用于Node.js的示例性URL(因为它有更多路径)。

通过截断从最右边的斜杠开始的完整路径,它将产生文件名:

var URL = require('url').parse('http://user:pass@host.com: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 ----^  */