Node.JS 从 MySQL 读取 BLOB 数据

14

我正在使用Node.JS的node-mysql模块。有一个列类型为BLOB,希望能够从中读取并且尽可能地将其进行base64编码。我没有找到任何关于如何实现这一点的信息。

有什么建议吗?

2个回答

26

尝试以下片段:

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

如果您的blob是二进制的,请使用以下内容:

var buffer = new Buffer( blob, 'binary' );
var bufferBase64 = buffer.toString('base64');
你也可以将其简化为一行代码:
var bufferBase64 = new Buffer( blob, 'binary' ).toString('base64');

1
blob未定义! - Aniruddh Agarwal
3
new Buffer已经被弃用,现在应该使用Buffer.from() - RozzA
@RozzA Buffer.from(blob,'binary').toString(); 这样将 Blob 转换为字符串可以吗? - Praveen Patel

22
值得注意的是:mysql-node 自动将 Blob 对象转换为 JavaScript 的 Buffer 对象
上述答案涉及到 base64 编码。
对于我来说,在 node 中只需将其作为字符串读取的最简单方法是:myObject.myBlobAttr.toString('utf-8')
截至2015年1月28日
来自 Felix 的 mysql-node 页面类型转换 为了您的方便,此驱动程序默认会将 mysql 类型转换为本机 JavaScript 类型。存在以下映射:
... Buffer TINYBLOB
MEDIUMBLOB
LONGBLOB
BLOB
BINARY
VARBINARY
BIT(必要时将填充最后一个字节为 0 位)
编辑 UTF-8 的替代选项: String.fromCharCode.apply(null, new Uint16Array(myObject.myBlobAttr));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接