如何将文件从 AWS S3 下载到客户端的设备?

Art*_*vez 7 javascript amazon-s3 amazon-web-services node.js

查看了有关如何将文件从 S3 下载到本地磁盘的所有教程。我遵循了所有解决方案,他们所做的是将文件下载到服务器而不是客户端。我目前拥有的代码是

app.get('/download_file', function(req, res) {
  var file = fs.createWriteStream('/Users/arthurlecalvez/Downloads/file.csv');
  file.on('close', function(){console.log('done'); });
  s3.getObject({ Bucket: 'data.pool.al14835', Key: req.query.filename }).on('error', function (err) {
   console.log(err);
   }).on('httpData', function (chunk) {
      file.write(chunk);
   }).on('httpDone', function () {
       file.end();
   }).send();

  res.send('success')

 })
Run Code Online (Sandbox Code Playgroud)

然后我如何将其发送给客户端,以便将其下载到他们的设备上?

Adi*_*l B 8

S3 支持通过 AWS Javascript API 生成预签名 URL 的能力。然后用户可以通过GET这个 URL 将 S3 对象下载到他们的本地设备。

有关Node.js代码示例,请参阅此问题。


Als*_*any 7

你可以像那样使用 SignedURL

var params = {Bucket: bucketname , Key: keyfile , Expires: 3600 , ResponseContentDisposition :  `attachment; filename="filename.ext"` };
var url = s3.getSignedUrl('getObject', params);

Run Code Online (Sandbox Code Playgroud)

生成的链接将强制下载名为 filename.ext

  • 这对我来说比任何更复杂的答案都更有效。 (2认同)