Я пытаюсь получить буфер из большого двоичного объекта, отправляемого на мой сервер SailsJ.
Пример того, что отправляется на сервер, это:
Blob(3355) {size: 3355, тип: "video / x-matroska; кодеки = avc1, opus"}
Оказавшись на стороне сервера, я делаю следующее:
let body = new Array(0);
let buffer;
let readable = req.file('recordingPart');
readable.on('data', (chunk) => {
body.push(new Buffer(chunk));
});
readable.on('end', () => {
buffer = Buffer.concat(body);
console.log('There will be no more data.', buffer.length, buffer);
});
При выполнении этой части кода я получаю ошибку:
buffer.js:226
throw new errors.TypeError(
^
TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string, buffer, arrayBuffer, array, or array-like object. Received type object
at Function.from (buffer.js:226:9)
at new Buffer (buffer.js:174:17)
...
В этом случае ошибка происходит при body.push(new Buffer(chunk));
на new Buffer(chunk)
Мой первый подход был похож:
let body = [];
let buffer;
let readable = req.file('recordingPart');
readable.on('data', (chunk) => {
body.push(chunk);
});
readable.on('end', () => {
buffer = Buffer.concat(body);
console.log('There will be no more data.', buffer.length, buffer);
});
но у меня есть эта ошибка:
buffer.js:475
throw kConcatErr;
^
TypeError [ERR_INVALID_ARG_TYPE]: The "list" argument must be one of type array, buffer, or uint8Array
at buffer.js:450:20
В этом случае ошибка появляется на Buffer.concat(body);
Я получил некоторые рекомендации из этого ответа Node.js: Как прочитать поток в буфер?
Может кто-нибудь помочь мне получить buffer
из этого req.file
.