如何在nodejs中将流转换为缓冲区?这是我的代码,用于在快递请求中解析文件。
app.post('/upload', express.multipart({
defer: true
}), function(req, res) {
req.form.on('part', function(part) {
//Here I want to convert the streaming part into a buffer.
//do something buffer-specific task
var out = fs.createWriteStream('image/' + part.filename);
part.pipe(out);
});
req.form.on('close', function() {
res.send('uploaded!');
});
});
您可以使用该stream-to
模块,该模块可以将可读流的数据转换为数组或缓冲区:
var streamTo = require('stream-to');
req.form.on('part', function (part) {
streamTo.buffer(part, function (err, buffer) {
// Insert your business logic here
});
});
如果您想更好地了解幕后发生的事情,则可以使用Writable
stream自己实现逻辑。作为可写流实现者,您只需定义一个函数:_write
method,每次将一些数据写入流时都会调用该方法。输入流完成数据发送后,将发出end
事件:然后,我们将使用Buffer.concat
method创建一个缓冲区。
var stream = require('stream');
var converter = new stream.Writable();
converter.data = []; // We'll store all the data inside this array
converter._write = function (chunk) {
this.data.push(chunk);
};
converter.on('end', function() { // Will be emitted when the input stream has ended, ie. no more data will be provided
var b = Buffer.concat(this.data); // Create a buffer from all the received chunks
// Insert your business logic here
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句