Как ответить на файл (из AWS) в ответ от Node.js - PullRequest
0 голосов
/ 05 марта 2019

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

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

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Используйте 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);
}
0 голосов
/ 06 марта 2019

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

...