CNode

求助:如何获取请求数据中的二进制文件?

问答
JJarvisQJ发布于7 年前最后回复7 年前2 回复4387 浏览0 收藏

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

查看回复

回复 (2)

A
alwayslyp#1·7 年前

可以用第三方解析包,也可以自己直接解析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);
    })
  });
}
J
JarvisQJ#2·7 年前

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

参与回复
登录后即可参与回复。登录