什么是Django/Python解决方案,为人们下载文件提供一次性URL?

Bre*_*nor 5 python django url proxy download

我正在寻找一种方法,可以在一个事件中向某人出售一张卡片,该卡片将具有一个独特的代码,以后他们可以使用这些代码只下载一个文件(mp3,pdf等),并掩盖真实情况文件位置,以便下载该文件的精明人员将无法多次下载该文件.在Amazon S3上托管文件以节省我们的服务器位于同一地点的带宽会很好.

我对代码的想法是预先生成将在卡上打印的唯一代码,并将这些代码存储在数据库中,该数据库也可以具有存储文件下载次数的字段.这样我们就可以设置允许用户下载文件的次数.

我需要指导的部分是如何隐藏/屏蔽原始文件位置,以便人们无法窃取该网址,然后根据需要多次下载文件.我已经完成了谷歌搜索,我要么不使用正确的关键字进行搜索,要么已经没有很多库或片段用于此类事情.

我猜我可能能够使用django.views.static.serve它作为实际文件和下载文件的用户之间的一种代理.我认为这种方法的唯一缺点是我需要使用实际的Web服务器,并且无法将该文件存储在Amazon S3上.

任何建议或想法都非常感谢.

yaw*_*awn 2

您可以使用简单的东西,例如mod_xsendfile。此功能也可在其他流行的网络服务器中使用,例如lighttpdnginx

它的工作原理如下:启用后,您的应用程序(例如,一个简单的 PHP 脚本)可以发送一个特殊的响应标头,使网络服务器提供静态文件。

如果您希望它与 S3 配合使用,您需要以这种方式处理每个请求,这意味着流量将通过您的站点,从那里到 AWS,再返回您的站点,然后返回客户端。S3 支持符号链接/别名吗?如果是这样,您可以将有效用户重定向到符号 URL 之一,并在几个小时后删除该符号链接。