【发布时间】:2015-10-01 10:24:14
【问题描述】:
我正在使用 Devise 进行帐户管理,并使用 Paperclip 将图像上传到 Amazon S3。设计工作正常,但是当我尝试上传图片时,出现以下错误:
Errno::EACCES in Devise::RegistrationsController#update
Permission denied @ dir_s_mkdir - /users/avatars
这是我的代码:
用户.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
我正在用
配置回形针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) }
如果我从has_attached_file 中的:path 选项中取出前导斜杠,则不会引发错误,但也不会上传图像。
非常感谢!
【问题讨论】:
-
尝试将
region键值对添加到s3_credentials:region: ENV['AWS_REGION'] -
不幸的是,这也没有帮助。不过建议很好。
标签: ruby-on-rails ruby amazon-s3 devise paperclip