Как сделать загрузку файла без сохранения его в node.js?

Привет всем.

Делаю загрузчик файлов на бэкенде.
Есть необходимость загружать любые медийные файлы типа картинок и видео а может и архив... Размер макс 1 ГБ на файл. Файлы буду загружатся на S3. Необходимо решать это на бэкенде, из-за кредов s3 и при загрузке будет запись в базу.

Т.к. переживаю за память(количество) сервиса, как рабочую так и файловую, хотелось бы принимать при загрузке только куски, которые тутже загружаются дальше на S3 и после удаляются из памяти. при этом поток сервиса не должен блокироваться всякими fs.readFile

Для S3 реализация есть

в примерах указанно как работать с файлом у которого есть физическим путь - в связи с отсутствием опыта не пойму/не найду как мне это запустить с загрузкой файла обычным post-запросом.

Спасибо заранее
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
@akdes Автор вопроса
Ключевые моменты, которые исключают загрузку на S3 напрямую с фронтенда:
Сервис будет базовый и использоватся в нескольких проектах. При переезде с S3 или изменении логики прийдётся менять все проекты по отдельности.

Решение на данный момент:
На фронтенде файл будет резаться на куски по 5 МБ и загружатся асинхронно через multipartUpload, на бэкенд.
Т.е. при начале загрузки будет передаваться идентификатор загрузки и при посл. кусках он будет оставаться.
По окончанию будет вызов на бэкенд, который будет собирать куски в один с помощью S3.
Тем самым можно горизонтально увеличивать ресурсы, без боязни проблем с загрузкой.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
На S3 можно загружать напрямую в обход в принципе вашего сервера. Вы генерируете разовый policy и через него идет загрузка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы