我试图在redis中保存一个二进制对象,然后将其作为图像提供回来。如何使用节点在redis中存储二进制对象?
这里是我用来保存数据的代码:
var buff=new Buffer(data.data,'base64');
client.set(key,new Buffer(data.data,'base64'));
这里是转储数据出代码:
client.get(key,function(err,reply){
var data = reply;
response.writeHead(200, {"Content-Type": "image/png"});
response.end(data,'binary');
});
数据的前几个字节似乎是损坏。幻数不正确。
有没有一些试验:
,当我做到以下几点:
var buff=new Buffer(data.data,'base64');
console.log(buff.toString('binary'));
我得到这个:
0000000:C289 504E 470D 0a1a 0A00 0000 0d49 4844
当我做此
var buff=new Buffer(data.data,'base64');
console.log(buff);
我得到如下:
缓冲器89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 00 00 00
我不知道在哪里的C2将
没有用这种方式处理图像,但不应该“解码”在“base64”中编码的内容? – Gntem
如果你'console.log(回复)',你会得到什么?您还可以通过将图像放入Redis来详细说明您正在尝试完成的任务吗?这不是存储大量二进制数据的最佳方式。 – loganfsmyth
数据作为base64试图保存二进制文件 – SamFisher83