0

我正在尝试为我的用户构建一种非常简单的方法,以通过我的网站从 aws 下载音频内容。这是流程:

  1. 我给用户一个下载链接。例如:www.mysite.com/foobar
  2. 用户点击链接。
  3. 在我的 rails 控制器中,我创建了一个过期的 aws s3 url 并自动开始从该 url 下载音频内容。
  4. 用户的浏览器应该询问用户是否保存文件。如果用户接受保存文件,我希望回调我的 rails 应用程序以记录用户实际下载了文件。

因此,从用户的角度来看,我希望该过程像转到我确定的 url 一样简单,并在出现提示时接受下载文件。

在后台,我想对用户隐藏 aws s3 url,并且我希望在用户接受下载后可以灵活地编写回调逻辑。

实现这一目标的推荐方法是什么?

4

1 回答 1

0

解决此问题的最佳方法是创建一个生命周期非常短(10 分钟?)的 S3 URL,并将重定向返回到 S3 URL。这确实向用户公开了 S3 url,但不是漏洞。

如果您想隐藏 S3 URL,您将需要通过您的服务器代理下载,这很昂贵并且会长时间消耗工作进程。我不推荐这样做,但这是隐藏 S3 资源的唯一方法。

此外,如果触发下载与视图很重要,则需要设置 Content-Disposition 标头以触发附件下载:

  Content-Disposition: attachment; filename="fname.ext"
于 2013-02-07T18:57:43.617 回答