Загрузка изображений на S3 с помощью React и Elixir / Phoenix - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь составить схему, как я собираюсь сделать это, и до сих пор у меня есть следующее:

Я беру файл в клиентской части и при отправке отправляю имя и тип файла вконец, где он генерирует предварительно назначенный URL.Я отправляю это в ИП.Затем я отправляю файл во внешний интерфейс.

Проблема здесь заключается в том, что когда я генерирую предварительное назначение, я хочу зафиксировать свое имя файла UUID, идущее к S3 в моей базе данных через серверную часть.Я не знаю, удастся ли клиенту успешно выполнить эту задачу.Я могу подумать о некоторых хитроумных способах сбора мусора - но мне интересно, есть ли обычно предписанный способ сделать это, который не представляет вероятность сбоев, о которых BE не знает?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Способ, которым я сейчас занимаюсь, таков:

  1. Сжать изображение на стороне клиента .
  2. Отправить изображение на сервер внутренних приложений.
  3. Создайте UUID на сервере.
  4. Отправьте изображение из s3 на сервер, используя UUID в качестве ключа.
  5. В случае успехапоместите UUID в базу данных.
  6. Ответьте клиенту с помощью UUID, чтобы он мог отобразить изображение.

Выполняя эти шаги, вы не вносите ошибки в свою базу данных.

0 голосов
/ 18 октября 2018

Да, есть альтернативный способ.Вы можете настроить ваш контейнер так, чтобы он отправлял событие всякий раз, когда объект создается / обновляется.Вы можете отправить это событие в тему SNS или в AWS Lambda.

Оттуда вы можете сделать запрос к вашему веб-крюку приложения Phoenix, который может вставить его в базу данных.

Преимущество заключается в том, чточто событие наступит только после создания файла.

Для получения дополнительной информации вы можете прочитать следующее: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html

...