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

时间:2018-10-18 06:46:38

标签: reactjs amazon-web-services amazon-s3 elixir phoenix-framework

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

我在前端抓取一个文件,并在提交时发送该文件名并键入到后端,在此它会生成一个预签名的URL。我将其发送给FE。然后,我将文件发送到前端。

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

2 个答案:

答案 0 :(得分:3)

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

您可以从那里向Phoenix应用程序Webhook请求,然后将其插入数据库。

优点是该事件仅在文件创建后才会发生。

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

答案 1 :(得分:0)

我当前处理此问题的方式如下:

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

通过执行以下步骤,您不会在数据库中引入错误。