【发布时间】:2023-03-12 01:12:01
【问题描述】:
我一直在关注 railstutorial.org 上的 rails 4 教程。我已经完成了大部分工作,该项目托管在 heroku 上,但现在想将图像上传添加到 Amazon S3。我已按照 heroku 网站上的指南进行操作,但无法将任何内容上传到 S3(欧洲)上的存储桶。
我使用的是回形针 3.5.2。
后模型
has_attached_file :post_photo,
styles: {
thumb: '100x100>',
square: '200x200#',
medium: '300x300>'
},
:storage => :s3,
:s3_credentials => {
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET'] },
:s3_protocol => "https",
:path => ":class/:id/:basename_:style.:extension",
:url => ':s3_eu_url',
:bucket => 'bucket_name'
后控制器
def post_params
params.require(:post).permit(:post_photo, :user_username, :title, :comment, :location, :user_id)
end
config/initializers/Paperclip.rb
Paperclip.interpolates(:s3_eu_url) { |attachment, style|
"#{attachment.s3_protocol}://s3-eu-west-1.amazonaws.com/#{attachment.bucket_name}/#{attachment.path(style).gsub(%r{^/}, "")}"
}
config/environment.rb
require 'aws/s3'
AWS::S3::DEFAULT_HOST = "s3-eu-west-1.amazonaws.com"
config/environments/production.rb
# config/environments/production.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
},
:url => ':s3_eu_url',
:path => ":class/:id/:basename_:style.:extension"
}
【问题讨论】:
-
你在使用 gem 'aws-sdk' 吗?
标签: ruby-on-rails heroku amazon-s3 ruby-on-rails-4 paperclip