我正在尝试将两个文件和更多文本写入响应。 然而,下面的代码只返回第一个文件和“Thats all!”文本。
var http = require('http'),
util = require('util'),
fs = require('fs');
server = http.createServer(function(req, res){
var stream = fs.createReadStream('one.html'),
stream2 = fs.createReadStream('two.html');
stream.on('end', function(){
stream2.pipe(res, { end:false});
});
stream2.on('end', function(){
res.end("Thats all!");
});
res.writeHead(200, {'Content-Type' : 'text/plain'});
stream.pipe(res, { end:false});
}).listen(8001);
最佳答案
您需要的是双工流,它将数据从一个流传递到另一个流。
stream.pipe(duplexStream).pipe(stream2).pipe(res);
在上面的示例中,第一个管道会将所有数据从 stream
写入到 duplexStream
然后将数据从 duplexStream
写入到stream2
和最后的 stream2
会将您的数据写入 res
可写流。
这是 write 方法的一种可能实现的示例。
DuplexStream.write = function(chunk, encoding, done) {
this.push(chunk);
}
关于javascript - 将多个文件传输到一个响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10462649/