如何告诉paperclip不保存原始文件?

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

我相信你可以简单地定义一个样式:原始让回形针替换原来的那个尺寸。

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

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

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

 after_save :reprocess_attach private def reprocess_attach if self..present? && Pathname.new(self..path).exist? self..save File.unlink(self..path) end end 

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

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]