Angular 实际将文件从S3 bucket下载到本地机器

Angular 实际将文件从S3 bucket下载到本地机器,angular,typescript,amazon-web-services,amazon-s3,Angular,Typescript,Amazon Web Services,Amazon S3,我正在尝试使用以下函数从我的bucket中获取s3文件: 异步导出() { 常量myKey=“…key…” const mySecret=“…秘密…” AWS.config.update( { accessKeyId:myKey, secretAccessKey:mySecret } ); var s3=新的AWS.s3(); s3.getObject({ Bucket:“…Bucket…”, 键:“…文件路径…” }, 函数(错误、数据) { if(错误!=null) { 警报(“检索对象失败

我正在尝试使用以下函数从我的bucket中获取s3文件:

异步导出()
{
常量myKey=“…key…”
const mySecret=“…秘密…”
AWS.config.update(
{
accessKeyId:myKey,
secretAccessKey:mySecret
}
);
var s3=新的AWS.s3();
s3.getObject({
Bucket:“…Bucket…”,
键:“…文件路径…”
},
函数(错误、数据)
{
if(错误!=null)
{
警报(“检索对象失败:+错误)
}
否则{
警报(“已加载”+data.ContentLength+“字节”)
}
})
}
消息告诉我,我已经加载了一个字节数的文件。然而,主要的目标是将文件放到我的本地机器上,我需要某种文件流在这里运行吗

笔记
使用angular typescript而不是angular js

是,您将文件作为流获取。不必将文件保存为流,您可以获得s3签名的url,并可以通过创建锚链接并动态单击该链接从该steam下载文件。下面的代码可以帮助您

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);
    }
  })
});
函数下载(url){
$(“”,{id:'idown',src:url}).hide().appendTo('body').click();
}
$(“#下载按钮”)。单击(函数(){
$.ajax({
url:'example.com/your_end_point',
成功:函数(url){
下载(网址);
}
})
});

第二个代码块将精确到哪里,如果这有助于您在应用程序中的任何地方编写自定义JS代码,我将使用angular来完成所有这些。但该文件应使用页面加载加载。