【问题标题】:Retrieve and send a PostgreSQL bytea image检索并发送 PostgreSQL bytea 映像
【发布时间】: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


    【解决方案1】:

    字节格式并不总是可以转换为 JSON,可能使用了 json 中不允许的字符。返回不同的数据格式。将不同的数据类型返回到您的前端。

    我建议您使用 Sqlalchemy (https://www.sqlalchemy.org/),这可以使您的应用程序具有 SQL 注入证明,并且还提供对特殊数据类型的支持。

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 2013-07-14
      • 2011-06-29
      相关资源
      最近更新 更多