我正在创建一个 Rails 应用程序,它允许管理员上传可选择公开显示的照片。对于上传/存储过程,我使用 Carrierwave gem 以及 Fog gem 和 S3。问题是,为了让这一切正常工作,我必须公开上传到 s3 存储桶的每个文件。有没有办法在逐个文件的基础上使文件公开/私有?此外,如果这种逐个文件的粒度是可能的,它是否可以扩展到图像版本(由自动 Carrierwave 调整大小创建)?
目前,我的载波初始化程序中有以下行:
config.fog_public = true
我正在创建一个 Rails 应用程序,它允许管理员上传可选择公开显示的照片。对于上传/存储过程,我使用 Carrierwave gem 以及 Fog gem 和 S3。问题是,为了让这一切正常工作,我必须公开上传到 s3 存储桶的每个文件。有没有办法在逐个文件的基础上使文件公开/私有?此外,如果这种逐个文件的粒度是可能的,它是否可以扩展到图像版本(由自动 Carrierwave 调整大小创建)?
目前,我的载波初始化程序中有以下行:
config.fog_public = true
实际上,在 Carrierwave 中它非常简单。
你可以这样做:
class PrivateUploader < StandardUploader
@fog_public = false
或者(未经测试,但应该可以完美运行)这个:
class PrivateUploader < StandardUploader
def fog_public
if local_condition
true
else
false
end
end
:-)
我还没有尝试过 DragonFly,但现在 Carrierwave 在过去 2 个月里已经解决了几个问题,它比我见过的任何其他东西都要好得多。灵活无比。
//哑光
只需让您的上传器类覆盖基类。我今天也把头发扯掉了.. :(这对我有用:
使用 Carrierwave 0.8.0(2013 年 5 月)/app/uploaders/whatever_uploader.rb
class WhateverUploader < CarrierWave::Uploader::Base
def fog_public
true # or false
end
end