具有载波的相同型号的动态商店目录
Dynamic store dirs for same models with carrierwave
我正在使用带有雾的 CarrierWave 将我的图像上传到 S3。
我有模型图像,可以表示不同尺寸的图像,并根据需要保存在不同的文件夹中。
例如,对于 image.jpg
,我可能有两个不同的上传版本需要另存为:
'images/large/image.jpg'
'images/small/image.jpg'
可能有任意数量的用例,使用 minimagick 的版本无法涵盖所有情况。
到目前为止我还没有找到解决办法。有人知道怎么做吗?
为了更改上传文件的放置位置,只需覆盖 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
我已经看到这个问题被问过几次了,所以我会写下我的最终解决方案。
我没有在模型上定义 mount_uploader,而是决定单独使用 Uploader,稍后将 url 保存到记录中。
动态改变store_dir和文件名可以这样实现
uploader = Uploader.new
uploader.define_singleton_method(:store_dir) do
'new_store_dir'
end
uploader.define_singleton_method(:filename) do
'new_filename'
end
uploader.store!(image)
使用这种方法,您还可以使用局部变量或控制器中可用的任何名称来定义名称。
希望它对其他人也有帮助。
我正在使用带有雾的 CarrierWave 将我的图像上传到 S3。
我有模型图像,可以表示不同尺寸的图像,并根据需要保存在不同的文件夹中。
例如,对于 image.jpg
,我可能有两个不同的上传版本需要另存为:
'images/large/image.jpg'
'images/small/image.jpg'
可能有任意数量的用例,使用 minimagick 的版本无法涵盖所有情况。
到目前为止我还没有找到解决办法。有人知道怎么做吗?
为了更改上传文件的放置位置,只需覆盖 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
我已经看到这个问题被问过几次了,所以我会写下我的最终解决方案。
我没有在模型上定义 mount_uploader,而是决定单独使用 Uploader,稍后将 url 保存到记录中。
动态改变store_dir和文件名可以这样实现
uploader = Uploader.new
uploader.define_singleton_method(:store_dir) do
'new_store_dir'
end
uploader.define_singleton_method(:filename) do
'new_filename'
end
uploader.store!(image)
使用这种方法,您还可以使用局部变量或控制器中可用的任何名称来定义名称。
希望它对其他人也有帮助。