请在Controller中的AWS服务器上帮助上传图像。
我想要做些事情。
1.提交带图像的表格数据
2.在控制器中获取映像并上传到AWS服务器
3.没有为AWS上传图像的模型编码。
而不是在模型中写代码如下
has_mongoid_attached_file :avatar, {
path: ':class/:id/:style/:basename.:extension',
storage: :s3,
bucket: bucket_name,
s3_credentials: {
access_key_id: 'access_key_id',
secret_access_key: 'secret_access_key'
},
styles: {
thumb: ['90x90^', :jpg],
feature: ['220x142^', :jpg],
show_page: ['720x420^', :jpg],
preview: ['145x90^', :jpg]
}
}
我想直接从控制器上传图片。
并且只保存上传图片的URL而不是下面的数据库。
"attachment_file_name": "imagename.png",
"attachment_content_type": "image/png",
"attachment_file_size": 1235,
"attachment_updated_at": TimeStamp,
我想只存储这样的网站
avatar = https://s3.amazonaws.com/bucket_name/imagename.png
注意:我的项目位于Rails 3.1.12
,Ruby 1.9.3p484
使用mongoid
答案 0 :(得分:0)
你需要在模型中传递url选项,比如
has_mongoid_attached_file :avatar, {
:url => ':s3_alias_url',
}
答案 1 :(得分:0)
嗨朋友你的商店S3凭证模型这是错误的,你需要将s3凭证存储在单独的yml文件中。
在您的config / 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']
}
}
撰写paperclip.rb
config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path]= '/:class/:attachment/:id_partition/:style/:filename'
在您的模型中需要验证图像类型
has_attached_file :avatar, styles: {
thumb: '100x100>',
square: '200x200#',
medium: '300x300>'
}
# Validate the attached image is image/jpg, image/png, etc
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/