这可能是反直觉的,但是我想要替换当前现有的回形针附件样式,或者在has_attached_file代码之外创建一个新样式。 (缩略图存储在S3中)。
我正在使用这个名为SmartCropper的伟大宝石,让我拍摄一张图像,然后围绕焦点裁剪到我选择的尺寸。
它的代码是这样的:
SmartCropper.from_file(banner.url(:medium)).smart_crop(350,630)
它正在使用我已经用回形针(中等大小的横幅)裁剪的缩略图,但我希望此代码覆盖(在S3 Bucket中)横幅中定义的另一种缩略图样式,如裁剪或的拇指即可。
不幸的是,似乎
banner.url(:medium) = SmartCropper.from_file(banner.url(:medium)).smart_crop(350,630)
是一个非常不正确的尝试解决方案。我也仔细阅读了一些用于存储方法的S3 API,我确实找到了,但是没有一个只接受路径和文件。铲斗系统相当于回形针,因此似乎简单的存储方法不是最好的选择。
我尝试过如果我可以将其作为自定义处理器进行研究,但我无法真正找到我想要的内容。
我尝试将缩略图样式更改为新图像时所做的一切都导致了S3错误。
有什么想法?
答案 0 :(得分:2)
Paperclip方法'url'和'path'只是根据你的路径设置生成字符串。因此,如果您已经上传了文件,则可以使用以下代码获取自定义拇指的路径:
banner.path(:my_custom_style) #this will be the path to save your custom thumb to
这里有两件重要的事情:
下一步是最简单的一步。如果您正在使用aws-sdk gem,并使用您的凭据配置它,那么将文件上传到指定路径就像下面这样简单:
s3 = AWS::S3.new
s3.buckets[YOUR_BUCKET].objects[path].write(binary_data)