如何告诉回形针不保存原始文件?

时间:2010-07-10 15:28:47

标签: ruby-on-rails paperclip

如何在上传时告诉Paperclip不保存原始文件?或者更好的是,将文件的缩放版本存储为原始文件?

3 个答案:

答案 0 :(得分:44)

我相信你可以简单地定义一种风格:原创让回形针替换那个尺寸的原件。

:styles => { :original => '300x168>', :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, ...}

答案 1 :(得分:4)

Cris G的解决方案在大多数简单案例中可能都不错,但它有局限性。 考虑到:风格:原始Paperclip流程首先是其他所有,所以更新后:原始图像(现在小得多)将成为后续处理的来源。 因此,你被迫保持:最佳分辨率的原始风格。 由于您需要使用处理器裁剪图像,情况会变得更糟:这是您真正需要真正原始质量的情况。 )

所以我会建议你有点原始(需要了解如何获得模型的每个附件)解决方案:

after_save :reprocess_attach

private

def reprocess_attach
    if self.<atch_name>.present? && Pathname.new(self.<atch_name>.path).exist?
        self.<atch_name>.save
        File.unlink(self.<atch_name>.path)
    end
end

它并不关心舞台后面的处理方式。它只会杀死原始文件)

答案 2 :(得分:0)

Paperclip默认保存原件,但我相信,如果您只是从迁移中删除它,那么它就不会尝试保存它。

我在模型上保存了缩放原件,以便用户以后可以编辑其图像。我的模型看起来像这样:

:styles => { :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, :resized_thumb => {:geometry => "115x70>"}, :deal => {:geometry => "64x56#"},  
:cropped_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}#", :jcrop => true},
:resized_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}>"},

:orig => '300x168>',  #this is the scaled original that I call later


:cropped_orig => {:geometry => '300x168#', :jcrop => true},
:resized_orig => {:geometry => '300x168>'} },
:processors => [:jcropper]