Angular-Amazon S3-在下载时从AWS签名的URL更改文件名



我有一个CSV文件(TestFile.CSV(从UI上传到S3,我想在另一个屏幕上下载相同的文件,但我必须为用户提供一个自定义文件名(比如,TestFile_UserName.CSV(,以便将其保存/下载到用户的机器上。

public downloadFile(key: any): Observable<string> {
let s3 = new AWS.S3();
let downloadUrl = s3.getSignedUrl('getObject', { Bucket: environment.bucket, Key: key });
return of(downloadUrl);}

上述功能为我提供了签名的URL,并使用原始名称自动下载文件(TestFile.CSV(

this.uploadDownloadService.downloadFile(key).subscribe((data) => {
window.location.href = data;});

我正在设置window.location.href以便下载文件,

将fileName覆盖为其他内容,然后让用户下载文件的最佳方式是什么?

感谢的任何帮助/建议

我刚刚找到了一个解决方案,如果它能帮助其他人,我可以使用下面的">ResponseContentDisposition"是工作(修改后的代码(代码。。。https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html#API_GetObject_RequestSyntax

public downloadFile(key: any): Observable<string> {
let newFileName = 'TestFile_UserName.CSV';
let s3 = new AWS.S3();
let downloadUrl = s3.getSignedUrl('getObject', {
Bucket: environment.bucket,
Key: key,
ResponseContentDisposition: 'attachment; filename ="' + newFileName + '"'
});
console.log(downloadUrl);
return of(downloadUrl);
}

这将把文件重命名为TestFile_UserName.CSV

然后将已签名的URL设置为href

this.uploadDownloadService.downloadFile(key).subscribe((data) => {
window.location.href = data;});**strong text**

我知道你在JS中工作,但使用Java s3库,当你调用预签名的url时,你可以将文件设置为具有自定义头(下载时的文件名、文件类型(。

最新更新