【问题标题】:Converted base64 image does not work, how can I get true base64 image?转换后的base64图像不起作用,我怎样才能得到真正的base64图像?
【发布时间】:2018-11-02 21:38:06
【问题描述】:

我尝试将我的请求负载转换为 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);
    }
});

server.get("/test", function(req, res){
    const data = "data:" + req.headers["content-type"] + ";base64," + Buffer.from(req.data.payload, 'binary').toString('base64');
    console.log(data);
});

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

data:image/jpeg;base64,/f39/QAQSkZJRgABAQAAAQABAAD9/QBDAAEBA...

当我使用这个https://www.base64-image.de/ 网站转换为base64 图像时,结果是(当我在浏览器中复制和粘贴时,它可以工作并显示图像):

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBA...

为什么结果不同,为什么缓冲到 base64 不起作用?

【问题讨论】:

    标签: node.js base64 buffer


    【解决方案1】:

    您似乎需要将encoding: null 设置为request 函数的选项,如this answer 中所述。它强制将body 作为二进制返回,而不是默认的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);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2015-12-09
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多