Node.JS从mysql读取BLOB

Mit*_*ens 10 mysql base64 blob node.js

我正在使用Node.JS node-mysql模块.一列有BLOB类型,想要从中读取,如果可能,base64对其进行编码.我还没有找到任何关于如何做到这一点.

有任何想法吗?

vim*_*ude 19

请尝试以下代码段:

var buffer = new Buffer( blob );
var bufferBase64 = buffer.toString('base64');
Run Code Online (Sandbox Code Playgroud)

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

var buffer = new Buffer( blob, 'binary' );
var bufferBase64 = buffer.toString('base64');
Run Code Online (Sandbox Code Playgroud)

您还可以将其简化为一行:

var bufferBase64 = new Buffer( blob, 'binary' ).toString('base64');
Run Code Online (Sandbox Code Playgroud)

  • `new Buffer` 现在已折旧 - 使用 `Buffer.from()` (3认同)

tre*_*tor 16

值得注意的是:mysql-node自动将Blob对象转换为javascript Buffer对象.
以上答案解决了base64编码问题.

对我来说,在节点中将其作为字符串读取的最简单方法是: myObject.myBlobAttr.toString('utf-8')


截至2015年1月28日,
来自Felix的mysql节点页面:

类型铸造

为方便起见,此驱动程序默认情况下会将mysql类型转换为本机JavaScript类型.存在以下映射:

...

缓冲

TINYBLOB
MEDIUMBLOB
LONGBLOB
BLOB
BINARY
VARBINARY
BIT(最后一个字节将根据需要填充0位)


编辑 UTF-8的备用选项(?)

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