Rails回形针不显示来自Amazon S3的上传图像

时间:2015-09-18 19:47:33

标签: ruby-on-rails amazon-web-services heroku amazon-s3

我将图片上传到Amazon S3,但它们没有显示。

我收到此错误:

<Error>
<Code>PermanentRedirect</Code>
<Message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<Bucket>cb123</Bucket>
<Endpoint>cb123.s3.amazonaws.com</Endpoint>
<RequestId>870BC2E8570EF4E7</RequestId>
<HostId>
yuBkeXxftr7O9Ib0SasFTq8Hlvgc7hkhx9VMr+VwRL74qSDgJ9rqMgEU9noRIQe/
</HostId>
</Error>

以下是我的设置:

has_attached_file :image, styles: { medium: "400x400#", small: "250x250#", :url =>':s3_domain_url', :path => '/:class/:attachment/:id_partition/:style/:filename' }
谢谢你!

3 个答案:

答案 0 :(得分:4)

将此添加到您的application.rb或每个环境的配置文件中:

config.paperclip_defaults = {
  :storage => :s3,
  :s3_host_name => 's3-eu-central-1.amazonaws.com',
  :s3_credentials => {
    :bucket => 'your bucket',
    :access_key_id => 'your access-key-id',
    :secret_access_key => 'your secret-access-key'
  }, 
  :url =>':s3_domain_url',
  :path => '/:class/:attachment/:id_partition/:style/:filename'
}

然后,您可以从模型中删除:url:path配置。

答案 1 :(得分:3)

在此处添加我的代码,因为自上次回答后语法略有改变。

您需要将您的S3_host_name添加到config / environments / development.rb中的config.paperclip_defaults以及production.db。

以下是完整的代码段,将us-west-2更改为您的存储桶所在的任何区域:

config.paperclip_defaults = {
  storage: :s3,
  s3_host_name: 's3-us-west-2.amazonaws.com',
  s3_credentials: {
    bucket: ENV.fetch('S3_BUCKET_NAME'),
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
    s3_region: ENV.fetch('AWS_REGION'),
  }
}

答案 2 :(得分:0)

尝试将此添加到您的spark-shell方法所在的模型中:

has_attached_file