Node.js 如何将来自远程主机的数据存储在对象属性缓冲区中?
假设我有一个Img URL列表,如: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) => {
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);