我怎样解析一个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
)。
我怎样解析一个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
)。
像这样的东西..
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));
/test/someFile.txt/
。 - Toolkitconsole.log(decodeURIComponent(path.basename(parsed.pathname)));
- Luke这是我的工作代码,希望能帮到您
import path from 'path'
const getBasenameFormUrl = (urlStr) => {
const url = new URL(urlStr)
return path.basename(url.pathname)
}
decodeURIComponent(path.basename('http://localhost/node-v18.12.1-x64.msi'))
node-v18.12.1-x64.msi
您可以轻松使用Node.js的url
模块来处理您的示例:
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 ----^ */
someFile.txt
吗? - falsetruKitty.jpg
或order.json
)。 - Aaronhttp://
吗? - Cory Danielson