【发布时间】:2014-01-13 12:28:32
【问题描述】:
我一直在关注 this guide 使用回形针直接上传到 S3 以及 this blog post 建议对先前链接的指南进行一些有用的调整。我唯一的区别是我的模型名称是照片而不是文档。
我将原始文件成功上传到我的存储桶,但 photo.rb(指南中的 document.rb)中的 before_create 操作在此行失败:
direct_upload_head = s3.buckets[Rails.configuration.aws[:bucket]].objects[direct_upload_url_data[:path]].head
rails 服务器控制台显示以下错误:
OpenSSL::SSL::SSLError(主机名与服务器证书不匹配): app/models/photo.rb:56:in `set_upload_attributes'
由于格式不正确,我之前收到与 DIRECT_UPLOAD_URL_FORMAT 验证失败有关的错误,所以我稍微修改了一下,以匹配回形针生成的 direct_upload_url。我的修改版本是:
DIRECT_UPLOAD_URL_FORMAT = %r{\Ahttps:\/\/#{Rails.configuration.aws[:region]}\.amazonaws\.com\/#{Rails.configuration.aws[:bucket]}\/(?<path>uploads\/.+\/(?<filename>.+))\z}.freeze
这与控制台中显示的 url 的格式相匹配:
"照片"=>{"direct_upload_url"=>"https://s3-eu-west-1.amazonaws.com/mybucketname/uploads%2F1389613985667-mo4ncxxus0q0vn29-d78ac9dc4f18fa612e33c87ec9ad0f4e%2Fmiddy.jpg"}
在修改 DIRECT_UPLOAD_URL_FORMAT 之后,我让它通过了验证,然后出现了 SSL 错误。
我注意到,在控制台中显示的网址中,正斜杠在“上传”和文件夹名称之后没有显示,但直到那时它们才会显示。这可能与它不符合 SSL 要求有关吗?
所有其他代码都与指南中的内容相匹配,但在必要时将“文档”切换为“照片”。
我可以做些什么来满足 SSL 要求?
编辑: 我还应该提到,我在引用的网址中放置了“mybucketname”,我的实际存储桶名称与该格式匹配,没有点或破折号等,只有小写字母。
【问题讨论】:
标签: ruby-on-rails ssl amazon-s3 ruby-on-rails-4 paperclip