Node.js 如何解析节点中的路径
我有一个正在运行的节点服务器,我试图弄清楚如何将路径传递到我的服务器上的文件(以及如何响应获取这些资源的请求),这样我基本上有一个静态文件服务器,但我可以根据请求参数来控制它(Node.js 如何解析节点中的路径,node.js,filepath,Node.js,Filepath,我有一个正在运行的节点服务器,我试图弄清楚如何将路径传递到我的服务器上的文件(以及如何响应获取这些资源的请求),这样我基本上有一个静态文件服务器,但我可以根据请求参数来控制它(POST或get等)。现在我的文件结构设置如下(dir\uu表示目录): 为了响应我的请求,我的代码如下所示: http.createServer(function(request, response) { if(request.method.toLowerCase() == 'get') { var fileP
POST
或get
等)。现在我的文件结构设置如下(dir\uu
表示目录):
为了响应我的请求,我的代码如下所示:
http.createServer(function(request, response) {
if(request.method.toLowerCase() == 'get') {
var filePath = './dir_content' + request.url;
if (filePath == './dir_content/') {
filePath = './dir_content/home.html';
}
fs.exists(filePath, function (exists) {
if (exists) {
fs.readFile(filePath, function (error, content) {
if (error) {
response.writeHead(500);
response.end();
}
else {
response.writeHead(200, {'Content-Type': contentType});
response.end(content, 'utf-8');
}
})
这允许我用正确的页面(如果存在)响应任何GET
网页请求,但它最终会将路径扭曲到服务器上的资源
示例:试图检索file1.txt的人将导航到localhost:8080/dir\u content/dir\u uploads/dir\u finished/file1.txt
但是我的代码会在他们的请求中添加额外的/dir\u内容
,使其看起来像他们试图访问:
localhost:8080/dir\u content/dir\u content/dir\u uploads/dir\u finished/file1.txt
是否有一种更简单的方法来提供到文件夹中资源的精确绝对路径,而不包括外部节点模块(通过某种方式设置一种基本目录)?乍一看,似乎您没有考虑请求。url可能包括dir\u内容前缀。如果这是真的,那么我建议进行一次简单的正则表达式测试,看看它是否存在:
if (!/^[\/]?dir_content\//i.test(request.url))
filePath = '/dir_content' + request.url;
filePath = '.' + filePath;
使用Simple fiddle演示正则表达式:
只需使用节点的路径库:
if (!/^[\/]?dir_content\//i.test(request.url))
filePath = '/dir_content' + request.url;
filePath = '.' + filePath;