我从用户选择的文件上传到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上传,我收到错误格式化密钥的错误。有什么想法吗?