Node.js 如何将来自远程主机的数据存储在对象属性缓冲区中?

Node.js 如何将来自远程主机的数据存储在对象属性缓冲区中?,node.js,axios,buffer,pdfkit,Node.js,Axios,Buffer,Pdfkit,假设我有一个Img URL列表,如: const res = [{src: 'http://.....file_01.jpg'}, ...{src: 'http://.....file_nn.jpg'}, ]; 我试图添加一个包含Imgs数据缓冲区base64编码的密钥: await AsyncForEach(res, async (el: ISceneImage) => { await Axios.get(el.src).then((body: any) => {

假设我有一个Img URL列表,如:

 const res = [{src: 'http://.....file_01.jpg'}, ...{src: 'http://.....file_nn.jpg'}, ];
我试图添加一个包含Imgs数据缓冲区base64编码的密钥:

await AsyncForEach(res, async (el: ISceneImage) => {
    await Axios.get(el.src).then((body: any) => {
        // console.log(`Got data `,body);  
        el.img = Buffer.from(body.data).toString('base64');
    });
});
console.log(`dataArr ${JSON.stringify(res)}`);
直到这里,一切都很好。 但当我试图从其他地方获取我的img数据时,比如:

pdfkit.image(new Buffer(res[0].img, 'base64') 
我实际上在使用pdfkit,并试图通过缓冲区连接这个img

我会找回一个未知的文件格式。。。
我认为在存储和检索base64编码的缓冲区时出现了一些问题…

存储base64编码的缓冲区字符串会像预期的那样工作

const doRequest = (url) => {
    return new Promise(function (resolve, reject) {
        request.get(url, function (error, response, body) {
            if (!error && response.statusCode == 200) {
                resolve({ response, body });
            } else {
                reject(error);
            }
        });
    });
}

await AsyncForEach(res, async (el: ISceneImage) => {
    const r: any = await doRequest(el.src);
    // console.log(`Got data `,r.body);  
    el.img = "data:" + r.response.headers["content-type"] + ";base64," +
              Buffer.from(r.body).toString('base64');
}

....

pdf.image(res[0].img, 0, 0);