node.js - 转换后的 base64 图像不起作用,我怎样才能得到真正的 base64 图像?

标签 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";

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 不起作用?

最佳答案

您似乎需要将 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);
    }
});

关于node.js - 转换后的 base64 图像不起作用,我怎样才能得到真正的 base64 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53126113/

相关文章:

mysql - NodeJS - 如何将 mysql 连接从主进程传递到子进程?

Java 11 : Patch sun. misc.BASE64Encoder

c++ - C++ 中的 std::ws 与 std::skipws

node.js - Mongoose 关闭连接

javascript - 使用包含空格的字符串调用 Error.constructor 时出现语法错误

objective-c - 使用 NSTask 执行 ionic 构建命令 - 无法访问启动路径

php - 为什么传输前需要对图片进行base64编码?

c# - 解码 XML 时 base64 字符串中的无效字符

使用缓冲区和线程进行 Java TCP byteArray 传输

java - Java中的 jitter buffer 实现