我需要连续运行两个命令,这些命令需要从同一流中读取数据。将流传输到另一个流之后,缓冲区将被清空,因此我无法再次从该流读取数据,因此无法正常工作:
var spawn = require('child_process').spawn;
var fs = require('fs');
var request = require('request');
var inputStream = request('http://placehold.it/640x360');
var identify = spawn('identify',['-']);
inputStream.pipe(identify.stdin);
var chunks = [];
identify.stdout.on('data',function(chunk) {
chunks.push(chunk);
});
identify.stdout.on('end',function() {
var size = getSize(Buffer.concat(chunks)); //width
var convert = spawn('convert',['-','-scale',size * 0.5,'png:-']);
inputStream.pipe(convert.stdin);
convert.stdout.pipe(fs.createWriteStream('half.png'));
});
function getSize(buffer){
return parseInt(buffer.toString().split(' ')[2].split('x')[0]);
}
要求 对此抱怨
Error: You cannot pipe after data has been emitted from the response.
和改变 的inputStream 到fs.createWriteStream
收益率,当然同样的问题。我不想写入文件,而是以某种方式 重用
请求 产生的流(或与此相关的任何其他流)。
一旦可读流完成管道传输,是否可以重用?完成上述示例的最佳方法是什么?
您必须通过将其输送到两个流中来创建流的副本。您可以使用PassThrough流创建简单流,只需将输入传递到输出即可。
const spawn = require('child_process').spawn;
const PassThrough = require('stream').PassThrough;
const a = spawn('echo', ['hi user']);
const b = new PassThrough();
const c = new PassThrough();
a.stdout.pipe(b);
a.stdout.pipe(c);
let count = 0;
b.on('data', function (chunk) {
count += chunk.length;
});
b.on('end', function () {
console.log(count);
c.pipe(process.stdout);
});
输出:
8
hi user
问题内容: 目标是: 创建文件读取流。 用管道将其压缩到gzip() 然后将zlib输出的读取流通过管道传输到: 1)HTTP 对象 2) 和 可写文件流,以保存压缩后的输出。 现在我可以降到3.1了: …效果很好,但是我还需要 将压缩后的数据保存到文件中, 这样我就不需要每次都进行zip压缩,并且能够直接将压缩后的数据作为响应流化。 那么,如何在Node中一次将一个可读流传送到两个可写流中? 将
我目前正在使用一个名为s3-upload-stream的Node.js插件,将非常大的文件传输到Amazon S3。它使用multipart API,并且在很大程度上工作得很好。 是否有一种方法可以使aws-sdk成为我可以将流管道传输到的东西?
问题内容: 我一直在使用Node.js中的二进制流进行实验,但令我惊讶的是,确实有一个工作演示,它使用节点无线电流获取Shoutcast流,并使用分块编码将其推入HTML5元素。但这仅适用于Safari! 这是我的服务器代码: 我的客户代码很简单: 这在Mac上的Safari 5中可以正常运行,但在Chrome或Firefox中似乎无法执行任何操作。有任何想法吗? 可能的候选对象包括编码问题,或者
问题内容: Gradle可以将多个项目合并到一个jar中吗? 我知道您可以使用以下方法针对单个项目执行此操作: 但是一个人如何将多个子项目压缩到一个jar中呢? 我试过了,但不起作用: 问题答案: 这是我的解决方案,它稍微简单一些: 代码已在Gradle 1.12上进行了测试
Kafka流中是否内置了允许将单个输入流动态连接到多个输出流的功能?允许基于true/false谓词进行分支,但这不是我想要的。我希望每个传入日志都确定它将在运行时流到的主题,例如,日志将流到主题和日志将流到主题。 我可以在流中调用,然后写给Kafka制作人,但这似乎不是很好。在Streams框架中是否有更好的方法来实现这一点?
本文向大家介绍说说node中的可读流和可写流的区别,包括了说说node中的可读流和可写流的区别的使用技巧和注意事项,需要的朋友参考一下 前言 nodejs中大量的api与流有关,曾经看到公司的一些大神的node代码,实现一个接口只需要pipe一下另一个java接口就可以了。简单的一行代码实在让人困惑。作为小白的自己一脸懵逼却又不敢问,因为根本不知道从何问起。现在终于通过学习,也能对流说出个123,