我有一个 JSON 摘要,我要将帖子保存到Post
模型
看起来像这样:
{
"provider_url": "http://twitter.com",
"description": "Four more years. pic.twitter.com/bAJE6Vom",
"title": "Twitter / BarackObama: Four more years. http://t.co/bAJE6Vom",
"author_name": "BarackObama", "height": 532, "thumbnail_width": 150, "width": 800,
"thumbnail_url": "https://pbs.twimg.com/media/A7EiDWcCYAAZT1D.jpg:thumb",
"author_url": "http://twitter.com/BarackObama", "version": "1.0",
"url": "https://pbs.twimg.com/media/A7EiDWcCYAAZT1D.jpg:large",
"provider_name": "Twitter", "type": "photo", "thumbnail_height": 150
}
保存的图片是提供商提供的原始照片网址。
例如:https://pbs.twimg.com/media/A7EiDWcCYAAZT1D.jpg
如果可能,我想使用Paperclip将图像存档到我自己的Amazon S3存储中。
我还有一个名为Post
的{{1}}列,我想存储由S3托管的上传/复制图片网址。
我尝试使用backup_s3_url
仍然......但它仍然获得原始图片网址。我想使用paperclip直接从URL保存图像。
open-uri
但上面的代码不起作用,仅供参考。
任何变通办法都将受到赞赏。
答案 0 :(得分:1)
将json图像作为base64编码的字符串发送 在Rails上对此进行解码并使用回形针保存到S3。
对于我的iOS应用程序,我将base64字符串发送到Rails模型上的虚拟属性,并使用“before_save”将实际S3属性值设置为已解码的字符串。
class Media1 < ActiveRecord::Base
before_save :set_custom_photo
attr_accessor :phototmp
has_attached_file :photo,
:styles =>
{ :thumb => '150x150#',
:small => '100x100>',
:large => '600x600>'},
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:s3_protocol => "https",
:path => ":class/:id/:basename_:style.:extension",
:url => ":s3_eu_url"
validates_attachment_size :photo, :less_than => 5.megabytes
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png']
def set_custom_photo
data = StringIO.new(Base64.decode64(self.phototmp))
data.class.class_eval { attr_accessor :original_filename, :content_type }
data.original_filename = "mapimage.png"
data.content_type = "image/png"
self.photo = data
end
end
答案 1 :(得分:0)
也许这些资源可能会有所帮助:
使用回形针从{urll:https://stackoverflow.com/a/4050758/2463468
上传使用回形针保存到s3:https://github.com/thoughtbot/paperclip/wiki/Paperclip-with-Amazon-S3