使用 Paperclip 将图像上传到 Amazon S3 时权限被拒绝
Permission denied when uploading image to Amazon S3 with 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) }
如果我从 has_attached_file
中的 :path
选项中去掉前导斜线,则不会抛出错误,但也不会上传图片。
非常感谢!
一如既往,非常简单的答案:
Errno::EACCES in Devise::RegistrationsController#update
Permission denied @ dir_s_mkdir - /users/avatars
当 Paperclip 试图写入本地文件系统(从未使用 s3)时被抛出。 :storage => :s3
从来没有做任何事情,因为我有 paperclip_default
而不是 paperclip_defaults
。该死的。
我正在使用 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) }
如果我从 has_attached_file
中的 :path
选项中去掉前导斜线,则不会抛出错误,但也不会上传图片。
非常感谢!
一如既往,非常简单的答案:
Errno::EACCES in Devise::RegistrationsController#update
Permission denied @ dir_s_mkdir - /users/avatars
当 Paperclip 试图写入本地文件系统(从未使用 s3)时被抛出。 :storage => :s3
从来没有做任何事情,因为我有 paperclip_default
而不是 paperclip_defaults
。该死的。