【问题标题】:Amazon s3- Paperclip can't upload images to proper pathAmazon s3-回形针无法将图像上传到正确的路径
【发布时间】:2012-05-24 18:10:48
【问题描述】:

我有一个 Rails 应用程序,用户可以将照片上传到该应用程序。照片上传到 Amazon S3 存储桶。我有一个“贡献者”,他有很多“列表”,其中一个“列表”有很多“图像”。我希望它将所有图像上传到这种类型的目录:

:contributor_id/:listing_id/IMAGES_HERE.jpg

我也希望这样,如果贡献者创建另一个列表,它不会为该贡献者创建一个全新的文件夹。我希望它使用贡献者 ID 将其上传到已创建的文件夹中。

对如何实现这一目标有任何想法吗?这是我当前的 :path 的样子

  has_attached_file :asset,
                :styles => {:large => "640x480", :medium => "300x300", :thumb => "100x100" },
                :storage => :s3,
                :s3_credentials => "#{Rails.root}/config/s3.yml",
                :path => "/:contributor_id/:id/:filename"

回答:

非常感谢您的回答。以下是我使用 Paperclip 的插值功能的方法。

Paperclip.interpolates('contributor_id') do |attachment, style|
 attachment.instance.listing.contributor_id
end

Paperclip.interpolates('listing_name') do |attachment, style|
 attachment.instance.listing.title.parameterize
end

然后是我的路径..

:path => "/:contributor_id/:listing_name/:filename"

【问题讨论】:

  • 你设置好 s3.yml 了吗?
  • 是的,此文件已正确设置。我没有问题让上传工作。我只是在寻找如何自定义他们上传到的上传目录结构,以及如何不根据贡献者 ID 创建重复的文件夹名称。

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


【解决方案1】:

我不确定,但通常是这样的:

module Paperclip      
  module Interpolations

    def timestamp attachment, style
      attachment.instance_read(:updated_at).to_i
    end

  end
end

我认为它应该是这样的:

module Paperclip      
   module Interpolations

     def contributor_id attachment, style
       attachment.instance_read(:contributor_id)
     end

   end
end

您可以阅读有关 PaperClip 的自定义插值的更多信息here

【讨论】:

  • 我想我应该能够编辑 :path 凭据以获得正确的目录结构。关于如何不重复创建的文件夹名称的任何想法?如果贡献者 (:id => 2) 上传多张照片,我不想拥有多个名为“2”的文件夹。我希望每次都将图像上传到自己的文件夹中。
  • 你测试了吗?如果您有像示例 /:contributor_id/:id/:filename 中的路径,那么每个贡献者的 id 将只有一个文件夹(就像在您的文件系统中一样)。因此,如果您将多张图片上传到属于某个贡献者( id = 2 )的列表(id = 1 ),那么您将获得如下文件树:/2/1/image_1.jpg i>、/2/1/image_2.jpg/2/1/image_n.jpg ...其中/2/2/1 对所有附件都相同。
  • 确保使用 :path => "/:contributor_id/:id/:filename.:extension" 将文件保存在他们的扩展名中。
  • 感谢大家的反馈!
  • attachment.instance_read(:updated_at).to_i 是如果图像更新则不起作用
猜你喜欢
  • 2012-07-07
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2011-01-02
  • 2013-10-03
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多