Как ответить файлом (из AWS) в ответ от Node.js

#node.js #networking #amazon-s3 #filestream

#node.js #сеть #amazon-s3 #поток файлов

Вопрос:

Я использую Node.js API для загрузки изображений профиля. Все изображения профиля хранятся в хранилище AWS s3.

Как загрузить файл с s3 на Node.js маршрутизируйте и возвращайте файл клиенту в ответ. Я не могу использовать хостинг файлов, потому что все маршруты защищены токеном, и пользователь может иметь или не иметь доступ к определенным изображениям профиля на основе некоторой логики.

Комментарии:

1. Вы должны передать файл из s3 в свой ответ. Взгляните на downloadStream из s3 SDK, это может вам помочь.

Ответ №1:

Хотя s3 SDK работает отлично, но я использовал simple stream из AWS для чтения и отправки фрагментов данных в ответ.

Ответ №2:

Используйте GetObject() для загрузки файлов из корзины s3. Смотрите следующий пример :-

 var stream = require('stream');

const s3 = require('../config/s3.config.js');

exports.doDownload = (req, res) => {
 const s3Client = s3.s3Client;
 const params = s3.downloadParams;

 params.Key = req.params.filename;

 s3Client.getObject(params)
 .createReadStream()
 .on('error', function(err){
 res.status(500).json({error:"Error -> "   err});
 }).pipe(res);
}
  

Комментарии:

1. Привет, Джасприт, спасибо за ответ, у меня есть еще один вопрос, похожий на этот. Как управлять загрузкой файла изображения со стороны клиента, обязательно кэшировать ответ изображения и также предоставлять аутентификацию для доступа к файлу изображения?