CarrierWave自定义原始文件名

时间:2018-07-07 14:22:52

标签: ruby-on-rails carrierwave fog

我正在尝试通过附加某种unique UUID来定制通过CarrierWave上传的图像的原始文件名。问题是我不希望将此UUID也附加到后续版本名称上。

这里的目标是我希望原始文件能够被默默保护。因此,用户不能仅仅通过删除"thumb_image.jpg"来获取"image.jpg"并访问原始"thumb_"。目标就是这样:

  • "00000001-image.jpg"(原始)
  • "thumb-image.jpg"(版本1)
  • "small-thumb-image.jpg"(第2版)

我似乎无法找到一种使用以下wiki文档将其正确集成的方法:

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,看来我可以通过以下方法来工作:

def filename
  "#{secure_token}_#{original_filename.chomp(File.extname(super))}.#{file.extension}" if original_filename.present?
end

version :thumb do
  process convert: 'jpg'

  def full_filename(for_file = file)
    "#{model.id}_thumb.jpg"
  end
end

protected

def secure_token
  var = :"@#{mounted_as}_secure_token"
  model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid)
end