Загрузка изображений в S3 с помощью React и Elixir / Phoenix

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

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

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
210
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

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

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

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

Я сейчас с этим справляюсь:

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

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

Хотя это нормальный подход, для этого требуется, чтобы клиент отправлял изображение на серверную часть, а затем на серверную часть S3 (загрузка происходит дважды и для загрузки используются внутренние ресурсы). Этого можно избежать, используя предварительно подписанные URL-адреса.

Abhyudit Jain 18.10.2018 10:19

@AbhyuditJain Спасибо, я еще разберусь с ними!

giraffesyo 18.10.2018 10:20

Другие вопросы по теме