0

请帮助在控制器中的 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,

我只想存储这样的 URL
avatar = https://s3.amazonaws.com/bucket_name/imagename.png

注意:我的项目Rails 3.1.12Ruby 1.9.3p484使用mongoid

4

2 回答 2

0

你需要在模型中传递 url 选项,像这样

 has_mongoid_attached_file :avatar, {
        :url            => ':s3_alias_url',
  }
于 2015-03-12T10:52:10.550 回答
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']
      } 
     }

写你的回形针.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/
于 2015-05-28T10:27:13.893 回答