【问题标题】:How to generate temporary downloads in Flask?如何在 Flask 中生成临时下载?
【发布时间】:2015-09-24 23:06:08
【问题描述】:

我有一个 Flask 应用程序,可以让用户下载 MP3 文件。如何使下载的 URL 仅在特定时间段内有效?

例如,我不想让任何人简单地转到 example.com/static/sound.mp3 并访问该文件,而是要验证每个请求以防止不必要的带宽。

我正在使用 Apache 服务器,但如果更容易实现,我可能会考虑切换到另一个服务器。另外,我不想使用 Flask 来提供文件,因为这会强制 Flask 直接将文件提供给用户,从而导致性能开销。相反,它应该使用 Apache 来提供文件。

【问题讨论】:

  • 检查日期时间并返回不同的东西?

标签: python apache flask


【解决方案1】:

您可以使用 S3 通过临时 URL 托管文件。使用 Flask 将文件上传到 S3(使用 boto3),但使用动态生成的临时密钥。

示例网址:http://yourbucket.s3.amazon.com/static/c258d53d-bfa4-453a-8af1-f069d278732c/sound.mp3

然后,当您告诉用户在哪里下载文件时,请给他们那个 URL。然后,您可以使用 cron 作业在时间段结束时删除 S3 文件。

这样,Amazon S3 直接提供文件,从而完全绕过您的 Flask 服务器。

【讨论】:

  • 您也可以将文件保留在 S3 上并使用即将到期的 URL。
猜你喜欢
  • 1970-01-01
  • 2021-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多