【发布时间】:2023-03-31 19:49:01
【问题描述】:
我正在使用 Node.JS node-mysql 模块。一列具有 BLOB 类型并希望从中读取,如果可能,对其进行 base64 编码。我找不到任何有关如何执行此操作的信息。
有什么想法吗?
【问题讨论】:
我正在使用 Node.JS node-mysql 模块。一列具有 BLOB 类型并希望从中读取,如果可能,对其进行 base64 编码。我找不到任何有关如何执行此操作的信息。
有什么想法吗?
【问题讨论】:
试试下面的 sn-p:
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');
【讨论】:
new Buffer 现已贬值 - 使用 Buffer.from()
注意:mysql-node 会自动将 Blob 对象转换为 javascript Buffer 对象。
以上答案针对 base64 编码。
对我来说,在节点中将其作为字符串读取的最简单方法是:
myObject.myBlobAttr.toString('utf-8')
截至 2015 年 1 月 28 日,
来自 Felix 的mysql-node page:
类型转换
为方便起见,默认情况下,此驱动程序会将 mysql 类型转换为原生 JavaScript 类型。存在以下映射:
...
缓冲区
TINYBLOB
中号
LONGBLOB
BLOB
二进制
VARBINARY
BIT(最后一个字节将根据需要用 0 位填充)
编辑 UTF-8 的替代选项 (?)
String.fromCharCode.apply(null, new Uint16Array(myObject.myBlobAttr));
【讨论】: