我在Node.js之上编写HTTP服务器,而不使用HTTP模块。
检索GET消息:GET /www/index.html HTTP/1.1
应发送一个位于/www/index.html
的文件的响应,与图像和其他文件相同。
有人能指导我采用javascript方式从磁盘中获取文件并将其添加到我的HTTP响应中吗?
我的服务器应该能够支持以下内容类型:
答案 0 :(得分:1)
我认为fs
module正是您所寻找的。 p>
它提供了各种打开和读取文件的功能。一个简单的例子:
fs.readFile('/etc/passwd', function (err, data) {
if (err) throw err;
console.log(data);
});
您还可以参考此博文,了解如何使用节点阅读文件:Different ways to read in files using node.js
答案 1 :(得分:1)
这样的事情:
var fs = require('fs'),
http = require('http'),
path = require('path');
http.createServer(function(req,res){
path.exists('./' + req.url, function(exists){
if (!exists){ res.writeHead(404, {'Content-Type': 'text/plain'}); res.end('not found'); }
else {
var read_stream = fs.createReadStream('./' + req.url);
if (read_stream.readable){ res.writeHead(200, {'Content-Type':'text/plain'}); }
else { res.writeHead(500, {'Content-Type':'text/plain'}); res.end('Error Reading File'); }
read_stream.on('data', function(data){ res.write(data); });
read_stream.on('end', function(){ res.end(); fs.close(read_stream); });
}
}
}).listen(3030);
这里的主要技巧是使用文件的可读流。