javascript - 在带有 sails js 的 nodejs 中,缓冲区未被识别为缓冲区

标签 javascript node.js stream sails.js buffer

我正在尝试从发送到我的 SailsJs 服务器的 blob 中获取缓冲区。

发送到服务器的示例如下:

Blob(3355) {size: 3355, type: "video/x-matroska;codecs=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: How to read a stream into a buffer?

谁能帮我从 req.file 中获取 buffer

最佳答案

你可以得到uploadedFile如下。

req.file('recordingPart').upload(function (err, uploadedFiles){

  if (err) return res.serverError(err);

  // Logic with uploadedFiles goes here

});

您可以从 uploadedFiles[0].fd 获取文件描述符,并使用它来读取/流式传输文件,如下所示。

fs.readFile(uploadedFiles[0].fd, 'utf8', function (err,data) {

   // Logic with data goes here 
   var myBuffer = Buffer.from(data);
});

要像上面那样使用 fs 创建 fs 实例,如下所示。

var fs = require('fs');

关于javascript - 在带有 sails js 的 nodejs 中,缓冲区未被识别为缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52656287/

相关文章:

javascript - 如何在浏览器或控制台中使用 javascript 导出关键字

java - Android:来自LAN的Mediaplayer流

c++ - 为什么 parse_config_file 在流上设置 failbit?

python - 如何使用Python流对象?

javascript - 错误: undefined is not an object (evaluating 'this.props.menuOptions.map' )

javascript - XMLHttpRequest 无法加载 http ://localhost:8081/blabla/bla/config Origin http://localhost is not allowed by Access-Control-Allow-Origin

javascript - Nodejs、请求和点表示法

python - 从一个容器到另一个容器运行命令

javascript - ANTLR4:匹配 [2 TO 9] 时出现问题,而 [2 - 9] 工作正常

javascript - CSS - 父子选择器不工作