CNode

求个http合并文件服务的栗子

SSZlibraco发布于13 年前最后回复13 年前7 回复4668 浏览0 收藏
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
    var mergefile = '';
    fs.readFile('a.txt',function(err, data){
        mergefile += data;
    });
    fs.readFile('b.txt',function(err, data){
        mergefile += data;
    });
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end(mergefile);
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

如上错误代码所示,我希望http服务器接受请求的时候读取合并a.txt和b.txt两个文件内容返回。

但是这个代码不对,我初学nodejs,希望各位能给个好示例。

查看回复

回复 (6)

X
XadillaX#1·13 年前

用async。。。

W
wuliao49#2·13 年前

其实我想说 LZ看看API就知道了啊。不要寄望别人直接写给你。

S
shmnh#3·13 年前

同意楼上的,node是基于事件循环的异步,你这个还没读到文件,就直接res.end了,结果会是空。修改下代码就OK了: var http = require('http'); var fs = require('fs'); http.createServer(function(req, res) { var mergefile = ''; fs.readFile('a.txt', function(err, data) { mergefile += data; fs.readFile('b.txt', function(err, data) { mergefile += data; res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end(mergefile); }); }); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');

W
wenbob#5·13 年前

这种事情,用echo命令才是王道

Y
yorkie#6·13 年前
var http = require('http');
var fs = require('fs');

http.createServer(function(req, res) {
  var src1 = fs.createReadStream('./a.txt');
  var src2 = fs.createReadStream('./b.txt');
  src1.pipe(res);
  src2.pipe(res);
}).listen(5000);
参与回复
登录后即可参与回复。登录