使用Paperclip从URL保留图像的S3的密钥路径不正确

时间:2014-06-10 14:09:35

标签: ruby-on-rails ruby amazon-s3 paperclip

我从用户选择的文件上传到S3的图像是有效的。我想将URL中的保存图像添加到数据库中。我收到以下错误:

[AWS S3 404 0.103582 0 retries] head_object(:bucket_name=>"my-bucket",:key=>"merches/merch_photos//medium/c211d05de2831cba60fa31ac21e9d52a_m.jpg") AWS::S3::Errors::NoSuchKey No Such Key

我的猜测是关键路径中的//是问题所在。在这两个斜杠之间应该有类似000/001/234的东西。这就是文件上传的工作方式,以及:id_partition应该做的事情。

在我的paperclip.rb初始化程序中我有

Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'

在我的模特中我有

def picture_from_url(url)
  self.merch_photo = URI.parse(url)
end

在我的控制器中,我在create方法中分配照片属性,如下所示:

@merch.picture_from_url(params[:merch][:merch_photo])

在我的配置中我有

config.paperclip_defaults = {
 :storage => :s3,
 :s3_permissions => :public_read_write,
 :s3_credentials => {
   :bucket => Rails.application.secrets.my_bucket,
   :access_key_id => Rails.application.secrets.my_aws_id,
   :secret_access_key => Rails.application.secrets.my_aws_secret
   }
 }

据我所知,一切看起来都是正确的,因为常规上传工作,一般设置应该没问题。但是,对于URL上传,我收到错误格式化密钥的错误。有什么想法吗?

0 个答案:

没有答案