我試圖在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