没有FileReader的NodeJS中Blob到Base64的情况

时间:2019-01-08 21:13:43

标签: javascript node.js base64 blob buffer

我目前有一个'image / jpeg'类型的Blob,我需要将其转换为base64字符串。我所有的代码都在使用Nodejs的独立JavaScript文件中,并且未与任何html文件连接。我研究过的将Blob转换为base64的每种方法都涉及使用FileReader类,该类要求javascript位于html之内,所以这是不可能的。我发现的唯一其他解决方法是使用以下代码行将blob转换为缓冲区,然后转换为base64。

    base64 = new Buffer( blob, 'binary').toString('base64');

但这只会返回错误:第一个参数必须是字符串,Buffer,ArrayBuffer,Array或类似数组的对象。

我很沮丧...有什么建议吗?

1 个答案:

答案 0 :(得分:3)

如果您正在使用NodeJS中的node-fetch从URL中读取内容,则您不想获得一个Blob,而是一个缓冲区。然后,您可以轻松转换为base64。

const b64 = await fetch(url)
      .then((response) => response.buffer())
      .then((buffer) => {
        const b64 = buffer.toString('base64');
        return b64;
      })
      .catch(console.error);