我正在尝试将一个二进制对象保存在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
中编码的内容吗? - Gntemconsole.log(reply)
,你会得到什么?你能否详细说明一下将图像放入Redis的目的是什么?这不是存储大量二进制数据的最佳方式。 - loganfsmyth