PostgreSQL - 如何将 Base64 图像字符串插入 BYTEA 列?
Posted
技术标签:
【中文标题】PostgreSQL - 如何将 Base64 图像字符串插入 BYTEA 列?【英文标题】:PostgreSQL - How to insert Base64 images strings into a BYTEA column? 【发布时间】:2019-08-05 19:39:59 【问题描述】:我有以下 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图像插入表格中。
Base64 字符串来自使用 Node.js 上的fs 模块获取图像后的缓冲区。
我正在尝试使用 Sequelize 的原始查询插入图像,但我没有找到关于此的适当信息。
【问题讨论】:
你想如何插入Base64图像?通过 SQL 语句?以编程方式? 以编程方式,使用 Sequelize's 原始查询...我使用 Node.js 中的文件系统 (fs) 包从缓冲区中提取了 base64 字符串 您可以将此有用信息添加到您的问题中。 @user871611 我添加了它,当然我确实必须首先添加它,但由于缺乏有关如何插入 bytea 的信息,我认为只是询问SQL查询就够了,感谢您的耐心等待 不应该是decode
函数(参见postgresql.org/docs/9.1/functions-binarystring.html)吗?类似decode(..., 'base64')
。
【参考方案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
【讨论】:
【参考方案2】:试试这个:
insert into table_name (image)
values decode('AcAAFBAO5Az....AQAAAFBCO5gT/AEAABT', 'base64')
这里有一些关于decode
的信息
https://www.base64decode.net/postgresql-decode
【讨论】:
以上是关于PostgreSQL - 如何将 Base64 图像字符串插入 BYTEA 列?的主要内容,如果未能解决你的问题,请参考以下文章
VichUploader和CroppieJS:如何发送base64裁剪图像以在Symfony 4中保留
如何将 blob 图像转换为 base64? base64 变量显示为空