【问题标题】:paperclip & aws gems - photo sharing app where are the urls stored by paperclip/aws?回形针和 aws gems - 照片共享应用程序 回形针/aws 存储的网址在哪里?
【发布时间】:2012-10-16 16:41:49
【问题描述】:

我指的是这个应用程序link 作为教程。看完之后。我很想了解程序(客户端或服务器)如​​何访问图像。由于程序似乎没有在服务器数据库中明确保存图像 url,一旦它们被上传到 Amazon S3?

实施此应用程序后,我在数据库中看不到 image_urls 或路径的列。但是程序会神奇地在客户端加载图片!!

引擎盖下发生了一些事情,那是什么?

这里是照片模型方法:

 Paperclip.interpolates :prefix  do |attachment, style|
   "#{attachment.instance.takenby}/#{Date.today.to_s }/#   
  {attachment.instance.image_file_name}"
 end 

 has_attached_file :image,
                :path => ":prefix/:style/:basename.:extension",
                :styles => { :thumbnail => "57x57", :original => "300x300" },
                :storage => :s3,
                :s3_credentials => S3_CREDENTIALS


  validates :image,:presence => true
  validates :lat, :lng,:presence => true,:numericality => true

【问题讨论】:

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


    【解决方案1】:

    它就在has_attached_file 的选项中。您已经告诉它如何在 :path 参数中构造图像的路径(对应于 s3 上的文件名)。所以所有回形针需要知道再次找到图像是:

    1. 您的 s3 存储桶的主机名
    2. 重建路径的相关信息 - 在这种情况下,看起来像 :prefix:basename:style:extension

    大部分信息都在您的数据库中。大概:basename 以某种方式来自原始文件名,它应该保存在图像附加到的模型的image_file_name 字段中。 :style 取决于您在运行时查找的图像大小。 :extension 可以通过image_content_type 属性确定。

    :prefix 有点棘手。事实上,我担心您的插值规则会破坏您的图像查找,因为它使用 Date.today 来构造前缀。你有超过一天的图片吗?如果是这样,它们仍然有效吗?我担心当图片上传时,它会有一个包含当天日期的文件名,然后当你以后去查找它们时,你会使用 new 当前日期重建 url,并且最后出现 403 错误。

    TL;DR 回形针在将图像上传到 s3 时构造图像 url,并在稍后根据相同的参数重建它们。

    【讨论】:

    • 你一针见血。 :prefix 正是导致重建路径问题的原因!无法检索超过 1 天的图像。我已经改变了它。我对它是如何工作的感到困惑,但现在一切都说得通了。非常感谢您的澄清。------------------------为此+1
    猜你喜欢
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多