我正在使用带雾的CarrierWave将我的图像上传到S3。
我有模型图像,可以表示不同大小的图像,并根据需要保存在不同的文件夹中。
例如,对于.
我可能有两个不同的上传版本需要保存为:
image.jpg
可能有任意数量的用例,使用minimagick的版本无法覆盖所有用例。
到目前为止,我还没有找到解决方案。有谁知道怎么做?
答案 0 :(得分:1)
我已经看过几次问这个问题,所以我会写出我的最终解决方案。
不是在模型上定义mount_uploader,而是决定单独使用Uploader并稍后将URL保存到记录中。
动态更改store_dir和文件名可以像这样完成
[
{"SectionTitle":"Section A",
"questions":
[{"title":"What is Java?"
"answers": [{"title":"programming language", "isCorrect":"true"},{"title":"cooking technique","isCorrect":"false"},{"title":"movie star","isCorrect":"false"}]
},...]
},...
]
使用这种方法,您还可以使用局部变量或控制器中可用的任何内容定义名称。
希望它也有助于其他人。
答案 1 :(得分:0)
为了更改上传文件的放置位置,只需覆盖store_dir方法:,针对您的情况(reference link)
class Image < CarrierWave::Uploader::Base
storage :file
# this if you using use condition for folder location
def store_dir
if model.somefield == "somecondition
"uploads/#{model.somefield}"
elsif model.somefield == "somecondition
"uploads/location2"
else
"uploads/default_dir"
end
end
# this is if you want to use version_name
def store_dir
'images/#{version_name}/'
end
end