我使用paperclip + S3存储图像
has_attached_file :image,
:whiny => false,
:styles => { :large => "550x340>",
:medium => "165x165>",
:small => "100x100>",
:thumbnail => "55x55>"},
:processors => [:cropper],
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:path => "/:id/:style",
:bucket => "XXX"
当我创建一个带图像的对象时,每件事情都很顺利(我的S3 Bucket中存储了4个不同大小的图像副本)
当我使用JCrop裁剪图像时出现问题,S3存储4个副本,但裁剪图像的尺寸 实际上是大尺寸。
我的controller.rb:
def update
@deal = Deal.find(params[:id])
respond_to do |format|
if @deal.update_attributes(params[:deal])
format.html { redirect_to(@deal, :notice => 'Deal was successfully updated.') }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @deal.errors, :status => :unprocessable_entity }
end
end
答案 0 :(得分:2)
这是它的工作原理:
现在,我能想到的最佳方式是使用新文件名上传裁剪后的图像。因此,当CDN检查其缓存时,它不会在那里找到它并询问s3该文件。您可以使用delayed_job或resque删除后台中的旧文件。
希望,它澄清了事情。