求个http合并文件服务的栗子
发布于 1年前 作者 SZlibraco 631 次浏览
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,希望各位能给个好示例。

7 回复

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

你这样肯定不行啊,顺序都乱掉了。莫非你要的是随机合并?~~~~

同意楼上的,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/’);

异步,异步,回调,回调,我就这么坑过来的…………

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

用async。。。

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);
回到顶部