我正在寻找一种方法,在一个活动,将有一个独特的代码,他们将能够使用,以便下载一个文件(mp3,pdf等)只有一次,并掩盖真正的文件位置,这样一个明智的人下载文件将不能不止一次。最好将文件托管在amazons3上,这样可以节省服务器所在位置的带宽。在
我对代码的想法是预先生成将打印在卡片上的唯一代码,并将这些代码存储在数据库中,该数据库还可以有一个存储文件下载次数的字段。这样我们就可以设置允许用户下载文件的尝试次数。在
我需要说明的是如何隐藏/屏蔽原始文件位置,这样人们就不能窃取该url,然后根据需要下载文件。我做过谷歌搜索,我不是没有用正确的关键字搜索,就是没有太多的库或代码片段可以找到这种类型的东西。在
我猜我可以使用django.views.static.serve
来装配一些东西,它充当实际文件和下载文件的用户之间的某种代理。我认为这种方法的唯一缺点是需要使用实际的web服务器,并且无法将文件存储在amazons3上。在
如有任何建议或想法,我们将不胜感激。在
你可以使用一些简单的东西,比如mod_xsendfile。此功能也可用于其他流行的web服务器,如lighttpd或nginx。在
它的工作原理是这样的:当启用时,应用程序(例如一个简单的PHP脚本)可以发送一个特殊的响应头,从而使web服务器服务于一个静态文件。在
如果你想让它与S3一起工作,你需要用这种方式处理每一个请求,这意味着流量将通过你的站点,从那里到AWS,再回到你的站点,再回到客户端。S3是否支持符号链接/别名?如果是这样的话,您可以将一个有效的用户重定向到其中一个符号url,并在几个小时后删除该符号链接。在
好主意。但是,我要警告不要使用单一下载方法,因为不能保证他们的第一次下载尝试会成功。也许用一个时间过期方法代替?在
但用Django做这个当然是可能的。以下是基本方法的概述:
FileField
的数据库表供文件下载。此表将唯一字符串映射到文件系统上的文件位置。在(
path
是要服务的文件的位置)因为我们使用这个Django页面来服务文件,所以用户无法找到原始文件的位置。在
相关问题 更多 >
编程相关推荐