【发布时间】:2022-09-28 05:14:13
【问题描述】:
我有一个应用程序,它使用 AWS Lambda 函数将图像作为 bytea 文件类型存储在 AWS PostgreSQL RDS 中。
该应用程序是用 javascript 编写的,允许用户上传图像(通常很小)。
<input
className={style.buttonInputImage}
id=\"logo-file-upload\"
type=\"file\"
name=\"myLogo\"
accept=\"image/*\"
onChange={onLogoChange}
/>
目前我并不关心图像的格式,但如果它使存储和检索更容易,我可以添加限制。
我正在使用 python 来查询我的数据库并发布和检索这些文件。
INSERT INTO images (logo, background_image, uuid) VALUES (\'{0}\',\'{1}\',\'{2}\') ON CONFLICT (uuid) DO UPDATE SET logo=\'{0}\', background_image=\'{1}\';\".format(data[\'logo\'], data[\'background_image\'], data[\'id\']);
当我想检索图像时:
\"SELECT logo, background_image FROM clients AS c JOIN images AS i ON c.id = i.uuid WHERE c.id = \'{0}\';\".format(id);
我尝试将此数据返回到前端:
return {
\'statusCode\': 200,
\'body\': json.dumps(response_list),
\'headers\': {
\"Access-Control-Allow-Origin\" : \"*\"
},
}
我收到以下错误:Object of type memoryview is not JSON serializable。
所以我有一个两部分的问题。首先,图像是客户上传的文件(通常是徽标或背景图像)。将这些作为 bytea 文件存储在我的数据库中是否有意义?或者有没有更好的方法来存储图片上传。
其次,我如何检索这些文件并将它们转换为我的前端可用的格式。
标签: javascript python postgresql bytea