从请求中获取文件路径

时间:2014-04-10 00:25:50

标签: javascript html css node.js socket.io

我有以下文件: app.js

var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs')

app.listen(8000);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
if (err) {
  res.writeHead(500);
  return res.end('Error loading index.html');
}

res.writeHead(200);
res.end(data);
  });
}

index.html(此处仅显示' head'):

<html lang="en" ng-app="Client">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="format-detection" content="telephone=no"/>
<meta name="viewport"
      content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, target-densitydpi=device-dpi"/>

<link rel="stylesheet" type="text/css" href="css/app.css"/>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
<link rel="stylesheet" type="text/css" href="css/slider.css"/>
<title>Web Client: Robot control</title>
</head>

我首先执行我的nodejs服务器:node app.js 我跑的时候

http://localhost:8000/index.html

即使请求是针对不同的文件,例如:css / app.css,服务器(app.js) 返回index.html文件。所以我的输出非常错误。

我可以知道如何在app.js中解析请求,获取url字段,然后从中提取所需的文件名吗?

谢谢。

解决 通过执行以下操作 -

  var pathname = url.parse(req.url).pathname;
  console.log("Request for " + pathname + " received.");
  fs.readFile(__dirname + pathname,

您还需要以下一行:

var url = require('url');

1 个答案:

答案 0 :(得分:0)

req.url

这个变量是你需要的,如果你请求127.0.0.1:8000/index.html,req.url是/index.html;如果您请求127.0.0.1:8000/css/filename,req.url是/ css / filename