2012-01-28 407 views
7

我正在使用Node.JS node-mysql模塊。一列有一個BLOB類型並想從中讀取,如果可能的話,base64對它進行編碼。我一直無法找到如何做到這一點。Node.JS從mysql讀取BLOB

任何想法?

回答

15

嘗試下面的代碼片段:

var buffer = new Buffer(blob); 
var bufferBase64 = buffer.toString('base64'); 

如果你的斑點是二進制的,請不要使用以下:

var buffer = new Buffer(blob, 'binary'); 
var bufferBase64 = buffer.toString('base64'); 

您也可以簡化到一個行:

var bufferBase64 = new Buffer(blob, 'binary').toString('base64'); 
9

值得注意的是:mysql-node自動將Blob對象轉換成javascr ipt緩衝區對象。
上面的答案解決了base64編碼問題。

對我來說,剛讀它作爲節點串最簡單的方法是: myObject.myBlobAttr.toString('utf-8')


作爲2015年1月28日的,
從Felix的mysql-node page

類型鑄造

爲了您的方便,此驅動程序將默認情況下將mysql類型轉換爲原生JavaScript類型。下面的映射存在:

...

緩衝

TINYBLOB
MEDIUMBLOB
LONGBLOB
BLOB
BINARY
VARBINARY
位(最後一個字節將充滿0位)


編輯 對於UTF-8替代選項(?)

String.fromCharCode.apply(null, new Uint16Array(myObject.myBlobAttr));