Да, вы получаете файл в виде потока. Вместо того, чтобы сохранить файл в виде потока, вы можете получить подписанный URL-адрес s3 и загрузить файл из этого потока, создав ссылку привязки и нажав ее динамически. Ниже приведенный код может вам помочь.
const AWS = require('aws-sdk')
const s3 = new AWS.S3()
AWS.config.update({accessKeyId: 'your access key', secretAccessKey: 'you secret key'})
const myBucket = 'bucket-name'
const myKey = 'path/to/your/key/file.extension'
const signedUrlExpireSeconds = 60 * 5 // your expiry time in seconds.
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
Expires: signedUrlExpireSeconds
})
Используйте этот URL в интерфейсе для запуска загрузки:
function download(url){
$('<iframe>', { id:'idown', src:url }).hide().appendTo('body').click();
}
$("#downloadButton").click(function(){
$.ajax({
url: 'example.com/your_end_point',
success: function(url){
download(url);
}
})
});