【问题标题】:NodeJS: Unable to convert stream/buffer to base64 stringNodeJS:无法将流/缓冲区转换为 base64 字符串
【发布时间】:2017-09-05 12:03:02
【问题描述】:

我需要创建我需要发送到第三方 API 的 base64 字符串。我有流和缓冲区。表单流我能够创建图像,因此流不会损坏。这是两个变量:

var newJpeg = new Buffer(newData, "binary");

var fs = require('fs');
let Duplex = require('stream').Duplex;

let _updatedFileStream = new Duplex();
_updatedFileStream.push(newJpeg);
_updatedFileStream.push(null); 

无论我尝试什么,我都无法将它们中的任何一个转换为 base64 字符串。

_updatedFileStream.toString('base64');
Buffer(newJpeg, 'base64');
Buffer(newData, 'base64');

以上都不起作用。有时我会得到 Uint8Array[arraySize] 或乱码字符串。我做错了什么?

【问题讨论】:

    标签: node.js stream


    【解决方案1】:

    使用 Promise 的示例(但可以很容易地适应其他方法):

    return new Promise((resolve, reject) => {
        let buffers = [];
        let myStream = <...>;
        myStream.on('data', (chunk) => { buffers.push(chunk); });
        myStream.once('end', () => {
            let buffer = Buffer.concat(buffers);
            resolve(buffer.toString('base64'));
        });
        myStream.once('error', (err) => {
            reject(err);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多