百度一下 nodejs url转base64 出来一片
里面基本上都是这种方法
var http = require('http');
var url = 'http://thirdwx.qlogo.cn/mmopen/BEMV4WOAicktAAllnv9FdJFSU7QYVibMU62ctg7Ie5HiaCuDVCyiapibwrs48N97yrzLel03FvOUqAHEZGfBY5tCdnuHKEg4YvZSC/132'; //一张网络图片
http.get(url, function (res) {
var chunks = [];
var size = 0;
res.on('data', function (chunk) {
chunks.push(chunk);
size += chunk.length; //累加缓冲数据的长度
});
res.on('end', function (err) {
var data = Buffer.concat(chunks, size);
var base64Img = data.toString('base64');
console.log(`data:image/png;base64,${base64Img}`);
});
});
但是这种异步的不是很方便,用 async/await 和 promise 改造下
async function imgUrlToBase64(url) {
let base64Img
return new Promise(function (resolve, reject) {
let req = http.get(url, function (res) {
var chunks = [];
var size = 0;
res.on('data', function (chunk) {
chunks.push(chunk);
size += chunk.length; //累加缓冲数据的长度
});
res.on('end', function (err) {
var data = Buffer.concat(chunks, size);
base64Img = data.toString('base64');
resolve({ success: true, base64Img });
});
})
req.on('error', (e) => {
resolve({ success: false, errmsg: e.message });
});
req.end();
})
}
调用起来就很方便了
let base64 = await imgUrlToBase64(url)