使用TypeORM保存Postgres BYTEA上的缓冲区仅存储10字节 [英] Saving Buffer on Postgres bytea with TypeORM only store 10 bytes

查看:14
本文介绍了使用TypeORM保存Postgres BYTEA上的缓冲区仅存储10字节的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一些图像保存在Postgres数据库上,但仅保存了10字节的数据。

流程如下:

我在服务器上收到一个base64编码的字符串,然后将其加载到缓冲区,将其设置为我的实体并保存。 但是,然后尝试从数据库恢复该信息,我只得到了10个字节的数据,并在查询中使用octet_length()进行了验证。

我的实体属性定义:

@Column({ "name": "entima_imagem", "type": "bytea", "nullable": false })
entima_imagem: Buffer;

接收数据并保存的代码:

entity.entima_imagem = Buffer.from(base64String, "base64");
const repository = this.getRepositoryTarget(Entity);
const saved = await repository.save<any>(entity);

在服务器上,在保存之前,我正在将文件写入光盘,我可以毫无问题地将其可视化。

推荐答案

基于评论https://github.com/typeorm/typeorm/issues/2878#issuecomment-432725569和从那里开始使用祸不单行格式想法https://www.postgresql.org/docs/9.0/datatype-binary.html我做了以下工作:

将缓冲区解码为祸不单行字符串,使用x对其进行转义,然后再次将其加载到缓冲区。

entity.entima_imagem = Buffer.from("\x" + Buffer.from(base64String, "base64").toString("hex"));

现在数据已保存,没有问题,我可以按预期方式检索它们。

看起来不是很优雅,但暂时解决了问题。

这篇关于使用TypeORM保存Postgres BYTEA上的缓冲区仅存储10字节的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆