Ответ 1
Вы можете использовать модуль 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
. Как разработчик потока для записи, вам нужно определить только одну функцию: метод _write
, который будет вызываться каждый раз, когда некоторые данные записываются в поток. Когда поток ввода завершит передачу данных, будет отправлено событие end
: затем мы создадим буфер, используя метод Buffer.concat
.
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
});