1

我很难通过foggem 将 Paperclip 上传到 Amazon S3。你看,我正在使用 Heroku,所以这就是要走的路。

问题是:我将应用程序配置为将上传内容发送到我的 Amazon S3 存储桶,正在发送图像,除了对象之外的所有内容都保存为picture属性设置为/pictures/original/missing.png,我不知道为什么。

以下是一些有助于缓解问题的数据:

我有一个Work模型,我在其中为名为“图片”的图像定义了一个回形针附件:

has_attached_file :picture, path: "app/public/system/images/:class/:id/:attachment/:style/img.:extension", styles: { large: "500x500>", medium: "300x300>", thumb: "100x100>" }

我创建了这个特殊的初始化文件paperclip_defaults.rb,用于告诉 Rails 事实上,我希望上传到 Amazon S3(隐藏实际密钥):

Paperclip::Attachment.default_options.update({
  path: "app/public/system/images/:class/:id/:attachment/:style/img.:extension",
  storage: :fog,
  fog_credentials: {
    provider: 'AWS',
    aws_access_key_id: 'lovelovelove',
    aws_secret_access_key: 'dr_strangelove',
    region: 'sa-east-1'
  },
  fog_directory: 'florencioassets',
  fog_public: true,
  fog_host: "http://florencioassets.s3-website-sa-east-1.amazonaws.com/"
})

我的表单将multipart属性设置为 true 和 all。

Work有一个示例文件,该文件已上传,但与我猜的对象没有正确关联: https ://s3-sa-east-1.amazonaws.com/florencioaassets/app/public/system/images/works/8/图片/原创/img.JPG

那么,关于为什么在没有实际图片的情况下保存对象的任何想法?猜猜这不是上传问题,每个人说。

感谢您的时间!

更新:

我真的希望有人能以优雅的方式帮助我解决这个问题,但无论如何,如果有人感兴趣,我为此做了一个快速的解决方法:

%w(original large medium thumb).each do |meth|
  define_method("#{meth}_picture_url") do
    "https://s3-sa-east-1.amazonaws.com/florencioassets/app/public/system/images/works/#{self.id}/pictures/#{meth}/img.JPG"  
  end
end
4

0 回答 0