#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. Привет, Джасприт, спасибо за ответ, у меня есть еще один вопрос, похожий на этот. Как управлять загрузкой файла изображения со стороны клиента, обязательно кэшировать ответ изображения и также предоставлять аутентификацию для доступа к файлу изображения?