使用文件名从

时间:2019-03-15 07:25:46

标签: reactjs amazon-s3

我正在尝试从Amazon s3下载文件,但名称不同。即不是带有时间戳的存储文件的名称。 但是,如果我从s3.getObject

下载
  s3.getObject({
    Key: fileKey,
    Bucket: `/${albumBucketName}`,
    //ResponseContentDisposition: `attachment; filename="${fileKey}"`,
    //ResponseContentType: "audio/wav"
  }, function (
    err,
    data
  ) {
   ....
});

它不会让浏览器处理下载。因此,我一般不会获得下载进度。我不想处理我的应用程序中的下载进度。我想从浏览器下载。 我没有采用URL方法,因为它不会让我为正在下载的文件指定名称。

编辑: 为此,有一个解决方案,它为锚标签下载属性指定了文件名。但它不能在Safari浏览器中使用。但我仍然不想让某些用户失去该功能的可访问性。

1 个答案:

答案 0 :(得分:1)

这部分是正确的:

ResponseContentDisposition: `attachment; filename="${desired_filename_here}"`,

...但是您需要s3.getSignedUrl()来代替s3.getObject()。这将生成一个包含嵌入式凭据的URL,该URL的格式允许访问该对象,但不能使凭据可用于任何其他目的。将此URL传递到浏览器,文件将以所需的名称下载。

您可以将ResponseContentDispositions3.getSignedUrl()一起使用。