如何在处理版本后使carrierwave不保存原始文件?

Mar*_*ark 8 file-upload ruby-on-rails-3 carrierwave

我正在使用CarrierWave在Rails 3.1中上传文件,我正在寻找一种节省服务器空间的方法.许多上传的照片都超过了20MB,所以在将它们处理成1024 x 1024后,我想删除原始照片.在上传器类中有没有简单的方法呢?

谢谢, - 马克

Jep*_*zen 23

我曾经有两个版本,意识到我不需要原版

所以没有

version :thumb do
    process :resize_to_limit => [50, 50]
  end

version :normal do
   process :resize_to_limit => [300,300]
end
Run Code Online (Sandbox Code Playgroud)

我删除了:正常并添加了这个

process :resize_to_limit => [300, 300]
Run Code Online (Sandbox Code Playgroud)

现在原件以我需要的尺寸保存,我在服务器上没有第三个未使用的图像


izu*_*oot 7

大家!选定的解决方案对我不起作用.我的解决方案

  after :store, :remove_original_file

  def remove_original_file(p)
    if self.version_name.nil?
      self.file.delete if self.file.exists?
    end
  end
Run Code Online (Sandbox Code Playgroud)


Bvu*_*Ic7 4

您可以在模型中定义 after_save 回调并删除照片。

我不知道你的型号,但如果你自定义它,类似这样的东西可能会起作用:

class User << ActiveRecord::Base

  after_create :convert_file
  after_create :delete_original_file

  def convert_file
    # do the things you have to do
  end 

  def delete_original_file
    File.delete self.original_file_path if File.exists? self.original_file_path
  end
end
Run Code Online (Sandbox Code Playgroud)