0

我有 2 个模型希望 CarrierWave 与之交互。ItemImage模型。

我想要发生的是一旦用户通过 Carrierwave 将他们的项目上传到 S3 - 这部分非常简单 - 每当另一个用户想要下载该项目时,他们按下一个按钮,该按钮触发一些动态生成下载链接的方法 - 过期当满足 2 个条件时。该项目已下载 X 次,或者已过去 X 小时(例如 24 小时)。

这个想法是互联网上没有指向该文件的静态下载链接。

我怎么做?

4

2 回答 2

3

CarrierWave 允许您为每个上传者(通过初始化程序)或特定上传者设置fog_public和选项。fog_authenticated_url_expiration在后一种情况下,您只需将上传器类定义放在self.fog_public = false其中。self.fog_authenticated_url_expiration = 123设置这两个选项后,任何调用都model.uploader.url将返回一个专门构建的 URL,该 URL 将在设置的时间后过期。

于 2013-05-05T22:18:35.620 回答
0

我很确定您只能限制 s3 图像的时间量。您不能限制下载次数。

http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_QSAuth.html谈到了一些。如果您使用 https 生成,那么将很难嗅探,并且您可能会很安全。您可以构建自己的 s3 前端,但随后您必须跟踪 URL、计算下载量并自行停止。我会认真考虑的。字节并不昂贵(恕我直言)

于 2013-05-03T23:29:40.723 回答