【问题标题】:Is it possible to configure Paperclip to produce HTTPS urls for S3?是否可以配置 Paperclip 为 S3 生成 HTTPS url?
【发布时间】:2011-12-15 09:52:09
【问题描述】:

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

<%= image_tag @product.image.url(:large) %>

在哪里

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"

生成的图片 URL 类似于:

http://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG

是否有一个神奇的回形针选项可以将其更改为:

https://s3.amazonaws.com/media.example.com/images/6/large/image123.JPG

【问题讨论】:

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


    【解决方案1】:

    您只需添加:

    :s3_protocol => :https
    

    这已覆盖in the documentation

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

    • s3_protocol:为您的 S3 资产生成的 URL 协议。可以是“http”或“https”。当您的 :s3_permissions 为 :public_read(默认)时默认为“http”,当您的 :s3_permissions 为其他任何内容时默认为“https”。

    【讨论】:

    • @JoshPinter 如果我已经通过回形针加载了图像并且想要将 https 添加到 url,那么如何告诉回形针呢?有没有一个选项可以让我不必再次上传所有图片。
    • @Moosa 如果您只是将协议更改为使用https,则不必重新上传它们。它应该可以工作。试试看,让我知道。
    • @JoshPinter 我试过了,但它不起作用 - has_attached 代码不是只在上传期间被调用吗?如果是这样,它如何处理现有图像?但是,即使是新的上传也不指向 https。在 S3 上,图像 url 显示为 https,但我的网站显示为 http。不知道为什么。 www.outfitadditions.com.
    • @Moosa 此外,您会在文档中看到,当您的 :s3_permissions:public_read 时,它默认为“http”。你的:s3_permissions是什么?
    • @Moosa 啊!太好了,很高兴你找到它。
    【解决方案2】:

    要更新您的代码,只需添加 :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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 2016-09-24
      • 1970-01-01
      • 2019-12-17
      相关资源
      最近更新 更多