gpt4 book ai didi

javascript - 如何将 Postgres bytea 转换为 base64 字符串

转载 作者:行者123 更新时间:2023-12-04 08:45:11 25 4
gpt4 key购买 nike

我有一个 base64 图像,我试图将其保存在 Postgres 数据库中(使用 Hasura)。该字段的类型为 bytea我不确定如何将这些数据保存到字段中。
我试过了 data:image/png;base64,sisodjodo...到该字段,并像这样保存它:\x6956424f5277304b47676f414141414...当我取回它时,它似乎与保存时的方式不同。

// Query the database and save resulting object
const user = {
avatar: '\x6956424f5277304b47676f414141414...'
}
user.avatar = btoa(user.avatar);
console.log(user.avatar);
// Prints: XHg2OTU2NDI0ZjUyNzczMDRiNDc2NzZmNDE0MTQxNDE0Z...

最佳答案

Postgres bytea字段必须以两种格式之一输入,最简单的一种是 hex .这种格式看起来像 \x[your byte string in hex]因此,假设您有一个名为 things 的表。与 bytea栏目 field ,您可以插入一个包含字节字符串 010101 的新行像这样:

mutation {
insert_things_one(object: {
field: "\\x010101"
}) {
field
}
}
结果将是:
{
"data": {
"insert_thing_one": {
"field": "\\x010101"
}
}
}
请注意,在 GraphQL 中,您必须转义 \ .您可以在 SQL 中验证它是否正确存储:
> select * from things;

field
\x010101
如果您想为每个问题存储一个 base64 编码的字节字符串,您需要去掉前导 data:image/png;base64,然后使用您使用的任何语言将 base64 字符串编码为十六进制。在JS中: Decode Base64 to Hexadecimal string with javascript

附注。我不建议使用文本字段来存储 base64 编码的字符串。这将花费您比必要更多的存储空间。根据我上面的回答,只需将其重新编码为十六进制。

关于javascript - 如何将 Postgres bytea 转换为 base64 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64361379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com