Ruby on rails 回形针及;aws gems-照片共享应用程序回形针/aws存储的URL在哪里?
我指的是这个应用程序作为一个教程。看了之后。我很想了解程序(客户端或服务器)如何访问图像。既然该程序在上传到AmazonS3后似乎没有明确地将图像URL保存在服务器数据库中 实现此应用程序后,我在数据库中看不到图像URL或路径的列。但是程序神奇地将图像加载到客户端 引擎盖下发生了什么事,那是什么事 以下是照片模型方法:Ruby on rails 回形针及;aws gems-照片共享应用程序回形针/aws存储的URL在哪里?,ruby-on-rails,heroku,amazon-s3,ios6,paperclip,Ruby On Rails,Heroku,Amazon S3,Ios6,Paperclip,我指的是这个应用程序作为一个教程。看了之后。我很想了解程序(客户端或服务器)如何访问图像。既然该程序在上传到AmazonS3后似乎没有明确地将图像URL保存在服务器数据库中 实现此应用程序后,我在数据库中看不到图像URL或路径的列。但是程序神奇地将图像加载到客户端 引擎盖下发生了什么事,那是什么事 以下是照片模型方法: Paperclip.interpolates :prefix do |attachment, style| "#{attachment.instance.takenby
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
它就在
的选项中,已附加了文件
。您已经在:path
参数中告诉它如何构造图像的路径(对应于s3上的文件名)。所以回形针再次找到图像需要知道的是:
:prefix
、:basename
、:style
和:extension
:basename
以某种方式来自原始文件名,该文件名应该保存在图像附加到的模型的image\u file\u name
字段中<代码>:样式取决于运行时查找的图像大小<代码>:可通过图像内容类型
属性确定扩展名
:前缀
有点棘手。事实上,我担心插值规则会破坏图像查找,因为日期。今天它用来构造前缀。你有超过一天的照片吗?如果是的话,它们还能工作吗?我担心当上传图像时,它会有一个包含当天日期的文件名,然后当你将来查找它们时,你会使用新的当前日期重新构建url,并最终导致403错误
TL;DR paperclip在将图像上传到s3时构建图像url,然后再根据相同的参数重新构建图像。你一针见血。:前缀正是导致重建路径出现问题的原因!无法检索超过1天的图像。我已经做了改变。我对它的工作原理感到困惑,但现在一切都有了意义。非常感谢您的澄清。--------------+1