如何从Node.js响应中回复文件(来自AWS)

时间:2019-03-05 18:51:36

标签: node.js networking amazon-s3 filestream

我正在使用Node.js API上传/下载个人资料图片。所有配置文件映像都存储在AWS s3存储中。

如何将文件从s3下载到Node.js路由并作为响应将文件返回给客户端。我无法使用文件托管,因为所有路由均受令牌保护,并且用户可能会或可能不会基于某些逻辑访问某些个人资料图片。

2 个答案:

答案 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);
}