我有2个模型,我希望CarrierWave与之互动。 Item
和Image
模型。
我想要发生的是,一旦用户通过Carrierwave将他们的项目上传到S3 - 这部分非常简单 - 每当另一个用户想要下载该项目时,他们按下一个触发某种动态生成下载链接的方法的按钮 - 满足2个条件时到期。该项目下载X次,或X小时已经过去(比如24小时)。
这个想法是互联网上没有静态下载链接到该文件。
我该怎么做?
答案 0 :(得分:3)
CarrierWave允许您为每个上传器(通过初始化程序)或特定上传器设置fog_public
和fog_authenticated_url_expiration
选项。在后一种情况下,您只需将self.fog_public = false
和self.fog_authenticated_url_expiration = 123
放在上传器类定义中。设置了这两个选项后,对model.uploader.url
的任何调用都将返回一个特殊构建的URL,该URL将在设定的时间后过期。
答案 1 :(得分:0)
我很确定你只能限制s3图像上的时间。你不能限制下载次数。
http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_QSAuth.html谈了一些。如果你使用https生成,那么很难嗅到你可能会安全。您可以将自己的前端构建到s3,但之后您必须跟踪URL,计算下载量并自行停止。我对此很认真。字节不是那么贵(恕我直言)