我有filename
,我想将图片上传到S3。
另外,我想使用class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"images"
end
def filename
"#{model.id}_#{SecureRandom.urlsafe_base64(5)}.#{file.extension}" if original_filename
end
end
方法更改文件名。
这是代码:
1_23434.png
第一次保存图像时,它会获得正确的文件名,例如{{1}}但是当我从控制台获取模型对象时,它会返回不同的图像名称。
这里有人可以帮助我吗?当我不使用雾时,它工作正常。
答案 0 :(得分:0)
问题出在Index mean 15% low high
A 288 43 245 331
B 50 8 43 58
C 338 51 287 389
D 50 8 43 58
E 16 2 14 18
F 66 10 56 76
G 118 18 100 136
H 17 3 14 20
I 91 14 77 105
J 26 4 22 30
K 117 18 99 135
L 165 25 140 190
M 18 3 15 21
方法中。在每次调用时,它返回不同的值。这是因为filename
生成一个随机字符串(并且它没有被缓存)。引擎盖下还使用SecureRandom.urlsafe_base64(5)
来构建与CarrierWave相关的路径字符串。这就是您从控制台运行filename
时获取不同图像名称的原因。
您要查找的方法是object.image.filename
(其中image_identifier
前缀的名称是您的上传器的名称。)
您可以尝试以下内容:
image
其中object.public_send("#{object.image.mounted_as}_identifier") || generate_unique_name
是您当前的generate_unique_name
实施。另一种方法是将哈希存储在模型本身中以供将来使用。
此外,关于creating random and unique filenames的官方维基页面可能对您有用。