【问题标题】:Permission denied when uploading image to Amazon S3 with Paperclip使用 Paperclip 将图像上传到 Amazon S3 时权限被拒绝
【发布时间】: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


【解决方案1】:

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

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

当 Paperclip 试图写入本地文件系统(从未使用 s3)时被抛出。 :storage =&gt; :s3 从来没有做任何事情,因为我有 paperclip_default 而不是 paperclip_defaults。去死吧。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2022-01-24
    • 2013-10-11
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多