是否可以配置Paperclip来生成HTTPS URL?

cai*_*nne 58 ruby-on-rails amazon-s3 paperclip ruby-on-rails-3

我正在使用Paperclip管理完全在HTTPS下提供服务的网站上的用户上传图像.为了避免IE7/IE8上的愚蠢安全警告,我还需要通过SSL提供这些图像.我通常使用以下内容渲染我的图像:

<%= image_tag @product.image.url(:large) %>
Run Code Online (Sandbox Code Playgroud)

哪里

class Product < ActiveRecord::Base

  has_attached_file :image,
                  :styles => {
                      :large => {:geometry => "616x450#"}
                  },
                  :storage => :s3,
                  :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"},
                  :path => ":attachment/:id/:style/:basename.:extension",
                  :bucket => CONFIG['s3_media_bucket'],
                  :default_url => "/assets/image_missing.png"
Run Code Online (Sandbox Code Playgroud)

并且生成的图像URL类似于:

http://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
Run Code Online (Sandbox Code Playgroud)

是否有魔术回形针选项将其更改为:

https://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG
Run Code Online (Sandbox Code Playgroud)

Jor*_*ing 100

你只需要添加:

:s3_protocol => :https
Run Code Online (Sandbox Code Playgroud)

这在文档中有所涉及.

has_attached_file有一些特定于S3的选项:
...

  • s3_protocol:为S3资产生成的URL的协议.可以是'http'或'https'.当你的:s3_permissions是:public_read(默认值)时默认为'http',当你的:s3_permissions是其他任何东西时,默认为'https'.

  • @Moosa另外,当你的`:s3_permissions`是`:public_read`时,你会在文档中看到它默认为'http'.你的`:s3_permissions`是什么? (4认同)
  • @JoshPinter如果我已经通过回形针加载图像并想要将https添加到网址,怎么会告诉回形针呢?是否有一个选项,我不必再次上传我的所有图像. (2认同)
  • @Moosa啊!很高兴,很高兴你找到了它. (2认同)

小智 24

要更新您的代码,请添加:s3_protocol,如下所示:

class Product < ActiveRecord::Base
has_attached_file :image,
              :styles => {
                  :large => {:geometry => "616x450#"}
              },
              :storage => :s3,
              :s3_credentials => {:access_key_id => "xxx", :secret_access_key => "xxx"},
              :s3_protocol => :https,
              :path => ":attachment/:id/:style/:basename.:extension",
              :bucket => CONFIG['s3_media_bucket'],
              :default_url => "/assets/image_missing.png"
Run Code Online (Sandbox Code Playgroud)