PostgreSQL-如何将Base64图像字符串插入BYTEA列?

时间:2019-03-14 19:23:23

标签: postgresql base64 sequelize.js bytea

我有以下SQL:

CREATE TABLE Documents (
  Id INT NOT NULL,
  UserId INT NOT NULL,
  Label CHARACTER VARYING(220) NOT NULL,
  Image BYTEA NOT NULL,
  PRIMARY Key(Id),
  FOREIGN KEY (UserId) REFERENCES Users(Id)
);

我想知道,我应该如何将Base64映像插入表中。

使用Node.js上的fs模块获取图像后,Base64字符串来自Buffer。

我正在尝试使用Sequelize的原始查询插入图像,但是我没有找到适当的信息。

2 个答案:

答案 0 :(得分:1)

回答有关Postgres和Sequelize的问题:

您将需要使用Sequelize.BLOB('tiny')数据类型来建模BYTEA Postgres数据类型。

以下是有关Sequelize中数据类型的更多信息(还包含上述信息):

http://docs.sequelizejs.com/manual/data-types.html

当转换为微小的Blob时,Postgres将默认为utf-8,这意味着您可能希望将数据转换为utf-8编码,存储数据,然后将其读取为utf-8。

编辑:

您将使用Base64将图像二进制数据编码为ASCII字符串: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

答案 1 :(得分:0)

尝试一下:

insert into table_name (image)
values decode('AcAAFBAO5Az....AQAAAFBCO5gT/AEAABT', 'base64')

以下是有关decode

的一些信息

https://www.base64decode.net/postgresql-decode