使用Paperclip将图像上载到Amazon S3时,权限被拒绝

时间:2015-07-13 08:23:49

标签: ruby-on-rails ruby amazon-s3 devise paperclip

我正在使用Devise进行帐户管理,使用Paperclip将图像上传到Amazon S3。 Devise工作正常,但是当我尝试上传图片时,会出现以下错误:

Errno::EACCES in Devise::RegistrationsController#update
Permission denied @ dir_s_mkdir - /users/avatars

这是我的代码:

user.rb

class User < ActiveRecord::Base
  devise :confirmable, :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  has_attached_file :avatar, 
                    :bucket => ENV["S3_BUCKET"],
                    :url => ':s3_domain_url',
                    :path => '/:class/:attachment/:id_partition/:style/:filename',
                    :styles => { 
                      :square => '200x200'
                    }, 
                    :default_url => "missing_avatar.png"


  validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end

我正在使用

配置Paperclip
config.paperclip_default = {
  :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']
  }
}

允许:avatar

devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, ..., :avatar) }

如果我从:path中的has_attached_file选项中取出前导斜杠,则不会抛出错误,但图像也不会上传。

非常感谢!

1 个答案:

答案 0 :(得分:0)

一如既往,非常简单的回答:

Errno::EACCES in Devise::RegistrationsController#update
Permission denied @ dir_s_mkdir - /users/avatars
当Paperclip试图写入本地文件系统时,

被抛出(从未使用过s3)。 :storage => :s3从未做过任何事情,因为我有paperclip_default而不是paperclip_defaults。当它。