【问题标题】:Paperclip AWS::S3::Errors::NoSuchKey error on copy回形针 AWS::S3::Errors::NoSuchKey 复制错误
【发布时间】:2013-06-07 09:31:02
【问题描述】:

我正在尝试将不同模型中的头像复制到我的User 模型中,但是当我尝试这样做时却收到了AWS::S3::Errors::NoSuchKey 错误。

这是引发错误的代码:

old_avatar = OldAvatar.find(1)
user = User.find(old_avatar.user_id)
user.avatar = old_avatar.avatar
user.save

user.avatar = old_avatar.avatar 行是抛出它的原因。

这是我的OldAvatar 模型...

has_attached_file :avatar, 
                    :styles => { 
                      :t => '20x20#',
                      :s => '40x40#',
                      :m => '50x50#',
                      :b => '80x80#',
                      :f => '100x100#' 
                    }, 
                    :storage => :s3, 
                    :s3_credentials => { 
                      :access_key_id => APP_CONFIG['s3_access_key_id'], 
                      :secret_access_key => APP_CONFIG['s3_secret_access_key']
                    },
                    :path => ":attachment/:id/:basename:normalized_style.:extension", 
                    :url => "/:attachment/:id/:basename:normalized_style.:extension",
                    :bucket => "old_bucket"

这是我的User 模型...

has_attached_file :avatar, 
                      :styles => { 
                        :t => '20x20#',
                        :s => '40x40#',
                        :m => '50x50#',
                        :b => '80x80#',
                        :f => '100x100#'
                      },
                      :storage => :s3, 
                      :s3_credentials => { 
                        :access_key_id => APP_CONFIG['s3_access_key_id'], 
                        :secret_access_key => APP_CONFIG['s3_secret_access_key']
                      },
                      :bucket => "new_bucket",
                      :path => ":attachment/:id_partition/:basename_:style.:extension",
                      :url => "/:attachment/:id_partition/:basename_:style.:extension"

请注意,我在两个不同的存储桶之间进行复制(如不同模型模型代码中所述),所以这可能与它有关吗?

【问题讨论】:

  • 看起来它只是一个 404。如果您知道图像存在这一事实,您是否会得到这个?
  • @FareeshVijayarangam 是的,我知道该图像存在。
  • @FareeshVijayarangam 如果我登录old_avatar.avatar,它会正确显示我要复制的图像的路径。
  • 我猜在这种情况下问题出在分配的左侧,这可能只意味着将 anything 分配给user.avatar 存在问题。如果您尝试手动分配user.avatar 是否有效?如果不是,则可能与您链接的代码中 User 模型的最后两行有关,即路径/URL 参数不起作用。 "new_bucket" 存在吗?
  • 我想您最好的选择是编写一些代码,将 1 行分配转换为您所指的手动过程。在模型之间复制时,宝石可能在某个地方搞砸了。

标签: ruby-on-rails ruby-on-rails-3 amazon-s3 amazon-web-services paperclip


【解决方案1】:

原来我有一些早期图像的路径不一致,因此它们与我为 Paperclip 设置的路径不匹配(因此生成了错误的图像 URL)。

所以,问题解决了。

【讨论】:

  • Paperclip 3.0.x 和 2.x 生成的路由似乎存在一致性问题。如果您正在为实时站点更新 gem,修复您的 Paperclip gem 版本可能是个好主意。这可能在某种程度上证明了您的“解决方案”是合理的,但我认为您没有编写不一致的路径,但是新版本的 gem 生成的路径与以前的版本不同。
  • 如果您在运行 spree 提供的回形针 rake 任务以调整以前上传的图像大小时正在寻找一种方法来修复 No Such Key 错误,这也很有帮助:stackoverflow.com/questions/16844281/…
【解决方案2】:

我遇到了这个问题,因为使用 :regular 而不是 :normal 的尺寸标识符命名错误。由于没有:regular,它给了我这个错误。

【讨论】:

    猜你喜欢
    • 2018-07-06
    • 2017-04-24
    • 1970-01-01
    • 2019-12-18
    • 2015-10-04
    • 2016-06-26
    • 2015-12-21
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多