通过管道将多个文件传送到一个响应
Pipe multiple files to one response
我正在尝试为响应写入两个文件和更多文本。但是,下面的代码只返回第一个文件和"这就是全部!"文本。
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);
}
你可以使用流流 这是一个非常基本的节点模块(不使用依赖)
var ss = require('stream-stream');
var fs = require('fs');
var files = ['one.html', 'two.html'];
var stream = ss();
files.forEach(function(f) {
stream.write(fs.createReadStream(f));
});
stream.end();
res.writeHead(200, {'Content-Type' : 'text/plain'});
stream.pipe(res, { end:false});
相关文章:
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- 使用来自不同异步函数的响应创建一个json对象
- 响应应包含一个对象,但得到的却是GET操作的数组
- D3.js:将一个有响应的饼图放在其父分区的中心
- 获取javascript函数中另一个javascript函数的响应
- 嵌套另一个 Ajax 请求时,Ajax 响应处理中断
- 如何将请求响应传递给另一个请求
- 有一个响应式按钮
- getList 的响应应该是一个数组,而不是一个对象或其他东西
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- 必须单击两次才能得到一个响应
- 响应于一个“;输入“;在<输入>领域
- 请求一个完整的响应对象,而不是紧凑的响应对象foursquare场地搜索api
- 另一个域上的ajax响应
- 当通过另一个函数调用它时,函数会给出NaN响应
- 服务器以 Status=304 响应一个浏览器的 GET 请求,以 200 响应另一个浏览器的 GET 请求
- d3:对一个类采取行动以响应一个事件
- 如何使一个声音响应一个按键在js html画布
- PHP/JS内容交换正在响应一个";1〃;毕竟?可以'找不到来源
- 下载一个文件发送响应一个POST请求通过nodejs?(没有AJAX)