2012-01-28 68 views
7

Tôi đang sử dụng mô-đun nút-mysql của Node.JS. Một cột có loại BLOB và muốn đọc từ nó và nếu base64 có thể mã hóa nó. Tôi đã không thể tìm thấy bất cứ điều gì về cách làm điều này.Node.JS đọc BLOB từ mysql

Bất kỳ ý tưởng nào?

Trả lời

15

Hãy thử đoạn mã sau:

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

Nếu blob của bạn là nhị phân, sử dụng sau đây thay vì:

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

Bạn cũng có thể đơn giản hóa đến một dòng:

var bufferBase64 = new Buffer(blob, 'binary').toString('base64'); 
9

Lưu ý: mysql-node tự động chuyển đổi đối tượng Blob thành javascr ipt Các đối tượng đệm.
Câu trả lời ở trên giải quyết mã hóa base64.

Đối với tôi, cách đơn giản nhất để chỉ đọc nó như là một chuỗi trong nút là: myObject.myBlobAttr.toString('utf-8')


Tính đến ngày 28 Tháng 1 năm 2015,
Từ Felix của mysql-node page:

Nhập đúc

Để thuận tiện cho bạn, trình điều khiển này sẽ chuyển các kiểu mysql thành các kiểu JavaScript nguyên gốc theo mặc định. Ánh xạ sau đây tồn tại:

...

Buffer

TINYBLOB
MEDIUMBLOB
LONGBLOB
BLOB
Binary
VARBINARY
BIT (byte cuối cùng sẽ được lấp đầy với 0 bit nếu cần)


Sửa lựa chọn thay thế cho UTF-8 (?)

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

Các vấn đề liên quan