求助:如何获取请求数据中的二进制文件?
发布于 6 年前 作者 JarvisQJ 3457 次浏览 来自 问答

我用的是Egg框架,原生的ctx.getFileStream()可以获取到文件流,但是只支持multipart/form-data。 现在我对接的前端只能用application/octet-stream,所以我需要找到办法获取到请求中的二进制文件。

2 回复

可以用第三方解析包,也可以自己直接解析req(原生的nodejs req对象) 比如:

const parse = (req) => {
  return new Promise((resolve, reject) => {
    let chunks = [];
    let size = 0;
    req.on('data', function (chunk) {
      chunks.push(chunk);
      size += chunk.length;
    });

    req.on("end", function () {
      let buffer = Buffer.concat(chunks, size);
      return resolve(buffer);
    });

    req.on('error', function(err) {
      return reject(err);
    })
  });
}

@alwayslyp 谢谢,按照你提供的代码解决了。顺便再问下,有什么第三方解析包,我知道有个busboy,但只能解析multipart/form-data

回到顶部