我正在使用Node.js API上传/下载个人资料图片。所有配置文件映像都存储在AWS s3存储中。
如何将文件从s3下载到Node.js路由并作为响应将文件返回给客户端。我无法使用文件托管,因为所有路由均受令牌保护,并且用户可能会或可能不会基于某些逻辑访问某些个人资料图片。
答案 0 :(得分:0)
尽管s3 SDK很好用,但是我使用了来自AWS的简单流来读取数据块并将其发送到响应。
答案 1 :(得分:0)
使用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);
}