У меня есть изображение 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...
btoa()
, он не рассматривает ваш'\x6956424f5277304b47676f41414141'
как двоичный файл. Вместо этого он обрабатывает его как строковое представление\x6956424f5277304b47676f41414141
. Я не делаю javascript, так как это родной язык дьявола, но я смог продублировать ваш вывод, используяselect encode('\\x6956424f5277304b47676f41414141', 'base64');
на языке не тьмы. - person Mike Organek   schedule 15.10.2020text
, а неbytea
для изображения в кодировке base64. - person Laurenz Albe   schedule 15.10.2020btoa()
создает строку ASCII в кодировке Base64 из двоичной строки (то есть объекта String, в котором каждый символ в строке обрабатывается как байт двоичных данных). - person Get Off My Lawn   schedule 15.10.2020