使用 React 和 Elixir/Phoenix 将图像上传到 S3

Uploading images to S3 with React and Elixir/Phoenix

我正在计划如何完成此任务,到目前为止我有以下内容:

我在前端抓取一个文件,然后在提交时将文件名和类型发送到后端,在后端生成预签名 URL。我将其发送给 FE。然后我在前端发送文件。

这里的问题是,当我生成预签名时,我想通过后端将我的 UUID 文件名提交到我数据库中的 S3。不知道前端会不会顺利完成这个任务。我可以想到一些垃圾收集方法 - 但我想知道,是否有一种通常规定的方法可以做到这一点,不会引入 BE 不知道的失败可能性?

是的,还有另一种方法。您可以配置您的存储桶,使其在对象为 created/updated 时发送事件。您可以将此事件发送到 SNS 主题或 AWS Lambda。

从那里您可以向 Phoenix 应用程序 webhook 发出请求,该请求可以将其插入数据库。

优点是只有在创建文件时才会发生该事件。

更多信息,您可以阅读以下内容:https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html

我目前的处理方式是这样的:

  1. 压缩图片client side
  2. 发送图片到后台应用服务器。
  3. Create a UUID 在后端。
  4. 将图片从s3发送到后端,使用UUID作为key。
  5. 成功后,将UUID放入数据库。
  6. 用 UUID 响应客户端,以便它可以显示图像。

通过执行这些步骤,您不会将错误引入数据库。