我正在使用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
我正在使用
配置Paperclipconfig.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
选项中取出前导斜杠,则不会抛出错误,但图像也不会上传。
非常感谢!
答案 0 :(得分:0)
一如既往,非常简单的回答:
Errno::EACCES in Devise::RegistrationsController#update
Permission denied @ dir_s_mkdir - /users/avatars
当Paperclip试图写入本地文件系统时,被抛出(从未使用过s3)。 :storage => :s3
从未做过任何事情,因为我有paperclip_default
而不是paperclip_defaults
。当它。