我正在尝试从Amazon s3下载文件,但名称不同。即不是带有时间戳的存储文件的名称。
但是,如果我从s3.getObject
s3.getObject({
Key: fileKey,
Bucket: `/${albumBucketName}`,
//ResponseContentDisposition: `attachment; filename="${fileKey}"`,
//ResponseContentType: "audio/wav"
}, function (
err,
data
) {
....
});
它不会让浏览器处理下载。因此,我一般不会获得下载进度。我不想处理我的应用程序中的下载进度。我想从浏览器下载。 我没有采用URL方法,因为它不会让我为正在下载的文件指定名称。
编辑: 为此,有一个解决方案,它为锚标签下载属性指定了文件名。但它不能在Safari浏览器中使用。但我仍然不想让某些用户失去该功能的可访问性。
答案 0 :(得分:1)
这部分是正确的:
ResponseContentDisposition: `attachment; filename="${desired_filename_here}"`,
...但是您需要s3.getSignedUrl()
来代替s3.getObject()
。这将生成一个包含嵌入式凭据的URL,该URL的格式允许访问该对象,但不能使凭据可用于任何其他目的。将此URL传递到浏览器,文件将以所需的名称下载。
您可以将ResponseContentDisposition
与s3.getSignedUrl()
一起使用。