How do you download a file from AWS S3 to a client's device?

10,733

Solution 1

S3 supports the ability to generate a pre-signed URL via the AWS Javascript API. Users can then GET this URL to download the S3 object to their local device.

See this question for a Node.js code sample.

Solution 2

you can use SignedURL Like that

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

the generated link will force download with the name filename.ext

Share:
10,733
Arthur Le Calvez
Author by

Arthur Le Calvez

Updated on June 24, 2022

Comments

  • Arthur Le Calvez
    Arthur Le Calvez over 1 year

    Have looked at all the tutorials on how to download files from S3 to local disk. I have followed all the solutions and what they do is download the file to the server and not to the client. The code I currently have is

    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')
    
     })
    

    How do I then send this to the client so that it is downloaded onto their device?