背景:
我已经按照Ryan Bates Railscast #182的方式实现了图像上传的用户自定义裁剪。
当设置为:file
存储方法时,它可以工作正常,但当设置为:s3
时则不能。在添加中间裁剪步骤之前,S3存储是正常工作的。
从服务器日志中可以看出,它似乎正在本地寻找源文件:
[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: /profiles/pictures/000/001/543/original/headshot.jpg is not recognized by the 'identify' command.>
这个文件存在于S3上,但在此时本地不存在,因为上传是在裁剪之前(以及之后)进行处理的。
我的问题:
如何在第二个处理步骤之前将文件从S3下载到本地服务器?
N.B. 我已经在SO上查看了其他答案。
使用S3时Paperclip寻找本地文件重新处理 - 看起来相关,但唯一的答案涉及降级Paperclip。我不能这样做,而且那个答案既没有被赞同也没有被接受。
Paperclip 2.3.5中的错误重新处理 - 这是关于旧版本的Paperclip。
其他想法:
我想到的另一种方法是在裁剪之前将文件存储在本地,然后使用DelayedJob或类似的东西稍后将其上传到S3。不过这将需要更多的工作,所以我现在宁愿避免这样做。
has_attached_file :picture, :styles => { ... }, :default_url => 'missing_:class_:attachment/missing_:style.png', :storage => :s3, :s3_credentials => S3_CONFIG
- Leo