3

我使用延迟回形针以及直接上传到S3。我的模型被称为Photo,其附件是image使用带有延迟回形针的S3直接上传

使用JavaScript中的图片将图片上传到S3。该文件存储在Paperclip希望找到原始图像的位置,并将文件详细信息保存到隐藏字段中。当提交表单时,这些属性被写入到照片模式:

image_file_name image_file_size image_content_type

因为写仅凭这些属性似乎不是足以触发延迟回形针处理图像,Photo.save后,我打电话Photo.image.reprocess!这会得到DelayedPaperclip来创建一个新的成功处理图像的Sidekiq作业。

的问题是,当我在PhotosController调用Photo.save,将文件复制到从S3一temp目录,然后再返回到S3。出现这种情况的工作,在和阻止:

[paperclip] copying image_assets/grab-original.tiff to local file /var/folders/bv/x495g9g10m7119680c9ssqmr0000gn/T/94943834d26bcb8b471f4eeb2a7f899d20141125-3895-1oqom7l 
[AWS S3 200 2.601589 0 retries] get_object(:bucket_name=>"example-com-development",:key=>"image_assets/grab-original.tiff") 

[paperclip] saving image_assets/grab-original.tiff 
[AWS S3 200 2.47114 0 retries] put_object(:acl=>:public_read,:bucket_name=>"example-com-development",:cache_control=>"max-age=29030400",:content_length=>534472,:content_type=>"image/tiff",:data=>Paperclip::AttachmentAdapter: grab.tiff,:key=>"image_assets/grab-original.tiff") 

为什么回形针复制文件下来,然后再返回?

回答

0

我的方法不可靠。即使它已经工作了,也不会将image_processing属性添加到Photo模型中。

挖掘到的延迟回形针API之后,下面似乎做的伎俩:

PhotosController#create

# Ensure we are flagged as processing 
@media_item.photo.prepare_enqueueing_for(:image) 

if @media_item.save 
    # Add Job 
    @media_item.photo.enqueue_delayed_processing 
end 

respond_with(:admin, @galleryable, @media_item) 

我已经要求一个更好的API在这里:https://github.com/jrgifford/delayed_paperclip/issues/116

相关问题