gpt4 book ai didi

javascript - toString ('base64' ) 在 Node 中返回无效图像数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:52 25 4
gpt4 key购买 nike

我目前有一个网站,我向服务器发送 GET 请求,并期望它从网站下载图像并将数据发送回客户端。如果我将下载的结果数据直接写入文件,它就可以工作。

    app.get('/image', function(req, res) {
request("http://ipcam/auto.jpg", {encoding: 'binary'}, function(err, response, body) {
if (err) res.send(err);
fs.writeFile('logo ' + (Math.random() * 1000).toFixed(0) + '.jpeg', body, 'binary', function(err){
if (err) throw err
console.log('File saved.')
})
res.send(200);
});
});

但是,当我尝试使用 Buffer 对象将其转换为 Base64 然后将其发送到客户端时,img 标签无法将其识别为有效的图像数据。使用显示 Base64 图像数据预览的在线实用程序证实了这一点。

服务器:

res.send(new Buffer(body.replace(/(\r\n|\n|\r)/gm,""), 'binary').toString('base64'));

客户:

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200 && xmlHttp.responseText != undefined) {
var base64string = xmlHttp.responseText.replace(/(\r\n|\n|\r)/gm,"");
document.getElementById('image').src = 'data:image/jpeg;base64,' + base64string;
}
};
xmlHttp.open("GET", '/image', true);
xmlHttp.send();

编辑:我删除了删除了所指出的换行符的正则表达式。但这并没有帮助。

当前服务器:

res.send(new Buffer(body, 'binary').toString('base64'));

当前客户:

var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200 && xmlHttp.responseText != undefined) {
document.getElementById('image').src = 'data:image/jpeg;base64,' + xmlHttp.responseText;
}
};
xmlHttp.open("GET", '/image', true);
xmlHttp.send();

最佳答案

{encoding: 'binary'}

据我所知,如果您希望请求将响应解释为二进制数据,则应该指定encoding:null

(引用)

encoding - Encoding to be used on setEncoding of response data. If null, the body is returned as a Buffer. Anything else (including the default value of undefined) will be passed as the encoding parameter to toString() (meaning this is effectively utf8 by default). (Note: if you expect binary data, you should set encoding: null.)

一旦你这样做了,你在响应中得到的body将被设置为缓冲区,所以你可以直接这样做:

body.toString('base64')

关于javascript - toString ('base64' ) 在 Node 中返回无效图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40323048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com