Node.JS читает BLOB из mysql - PullRequest
10 голосов
/ 28 января 2012

Я использую модуль Node.JS node-mysql.Один столбец имеет тип BLOB и хочет читать из него и, если возможно, base64 его кодировать.Я не смог ничего найти о том, как это сделать.

Есть идеи?

Ответы [ 2 ]

17 голосов
/ 28 января 2012

Попробуйте следующий фрагмент:

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');
15 голосов
/ 28 января 2015

Примечание: mysql-node автоматически преобразует объекты Blob в объекты буфера javascript.
Приведенный выше ответ касается кодировки base64.

Для меня самый простой способ просто прочитать егокак строка в узле была: myObject.myBlobAttr.toString('utf-8')


По состоянию на 28 января 2015 г.
со страницы Феликса mysql-узла :

Приведение типов

Для вашего удобства этот драйвер по умолчанию преобразует типы mysql в собственные типы JavaScript.Существуют следующие сопоставления:

...

Буфер

TINYBLOB
MEDIUMBLOB
LONGBLOB
BLOB
BINARY
VARBINARY
BIT (последний байт будет заполнен 0 битами по мере необходимости)


Редактировать Альтернативная опция для UTF-8 (?)

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

...