【问题标题】:Uploading images to S3 with React and Elixir/Phoenix使用 React 和 Elixir/Phoenix 将图像上传到 S3
【发布时间】:2019-02-22 00:32:07
【问题描述】:

我正在尝试计划如何实现这一点,到目前为止,我有以下几点:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 虽然这是一个不错的方法,但这需要客户端将图像发送到后端,然后再发送到 S3(上传发生两次并使用后端资源进行上传)。这可以使用预签名的 url 来消除。
      • @AbhyuditJain 谢谢,我会进一步调查!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 2018-03-02
      相关资源
      最近更新 更多