【问题标题】:CarrierWave customize original filenameCarrierWave 自定义原始文件名
【发布时间】:2018-07-07 14:22:51
【问题描述】:

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

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

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

我似乎找不到使用以下 wiki 文档完全正确集成此功能的方法:

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

【问题讨论】:

    标签: ruby-on-rails carrierwave fog


    【解决方案1】:

    好的,看来我可以使用以下方法来解决这个问题:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 2019-06-28
      相关资源
      最近更新 更多