Node.js 转换后的base64映像不工作,如何才能获得真正的base64映像?

Node.js 转换后的base64映像不工作,如何才能获得真正的base64映像?,node.js,base64,buffer,Node.js,Base64,Buffer,我尝试将请求负载转换为base64,但代码的结果不是有效的base64映像。当我尝试在浏览器中使用它时,它不会显示图像 所以我尝试编写简单的代码将图像转换为base64或使用npm模块,但结果是一样的,我没有得到有效的图像 const request = require('request'); const url = "http://cdn1.giltcdn.com/images/share/uploads/0000/0001/7250/172502872/420x560.jpg"; req

我尝试将请求负载转换为base64,但代码的结果不是有效的base64映像。当我尝试在浏览器中使用它时,它不会显示图像

所以我尝试编写简单的代码将图像转换为base64或使用npm模块,但结果是一样的,我没有得到有效的图像

const request = require('request');

const url = "http://cdn1.giltcdn.com/images/share/uploads/0000/0001/7250/172502872/420x560.jpg";

request({url, gzip: true}, function (err, res, body) {

    if(!err){
        const data = "data:" + res.headers["content-type"] + ";base64," + Buffer.from(body, 'binary').toString('base64');
        console.log(data);
    }
});

结果是相同的(当我在浏览器中复制和粘贴时,它不会显示图像):

数据:图像/jpeg;base64,/f39/qaqskzjrgabaaaqabaad9/QBDAAEBA

当我使用此网站转换为base64图像时,结果是(当我在浏览器中复制和粘贴时,它工作并显示图像):

数据:图像/jpeg;base64,/9j/4AAQSKZJRGABAQAAAQABAD/2wBDAAEBA


为什么结果会不同,为什么缓冲区不能使用base64?

似乎需要将
编码:null
设置为
请求
函数的一个选项,如中所述。它强制将
正文
作为二进制返回,而不是默认的
utf8

const request = require('request');

const url = "http://cdn1.giltcdn.com/images/share/uploads/0000/0001/7250/172502872/420x560.jpg";

request({url, gzip: true, encoding: null}, function (err, res, body) {
    if(!err) {
        const data = "data:" + res.headers["content-type"] + ";base64," + Buffer.from(body, 'binary').toString('base64');
        console.log(data);
    }
});
const request = require('request');

const url = "http://cdn1.giltcdn.com/images/share/uploads/0000/0001/7250/172502872/420x560.jpg";

request({url, gzip: true, encoding: null}, function (err, res, body) {
    if(!err) {
        const data = "data:" + res.headers["content-type"] + ";base64," + Buffer.from(body, 'binary').toString('base64');
        console.log(data);
    }
});