2012-01-28 405 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));