我有lambda可以对s3对象进行签名并生成预签名的URL,并且可以正常工作,我想在Angular中使用预签名的URL,而不是生成链接并从浏览器下载,这是我的实现:
component.ts
public downloadFile() {
this.downloadService.downloadFile(this.downloadLink)
.subscribe((response) => {
console.log(response);
});}
service.ts
public downloadFile(downloadLink: string) {
return this.http.get('lambdalink?bucket=name&objeect=name')
.map((response) => {
let blob = new Blob([response], { type: '.psd' });
let url= window.URL.createObjectURL(blob);
window.open(url);
});
}
template.html
<span (click)="downloadFile()">Download</span>
我的lambda希望存储区名称和对象名称生成预先签名的URL,问题是如何将对象名称传递给lambda,因为我的树结构如下:
- folder1/
project1/
samplev1.psd
- folder2/
project1/
sampleVer2.psd
那么如何将对象名称传递给lambda并生成预签名的URL,以便在单击时下载并能够下载文件?