Paperclip is missing the Protocol (https) with Amazon S3

…衆ロ難τιáo~ 提交于 2020-01-11 07:45:10

问题


In production.rb:

config.paperclip_defaults = {
    s3_host_name: "s3.#{ENV.fetch('AWS_REGION')}.amazonaws.com",
    storage: :s3,
    s3_credentials: {
        bucket: ENV.fetch('S3_BUCKET_NAME'),
        access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
        secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
        s3_region: ENV.fetch('AWS_REGION'),
    }
}

I don't have anything in the initializers/paperclip.rb.

In my model:

class MyModel < ApplicationRecord
  has_attached_file :photo, styles: {
      thumb: '100x100>',
      square: '200x200#',
      medium: '300x300>'
  }
  validates_attachment_content_type :photo, content_type: /\Aimage\/.*\Z/
  def photo_url=(url)
    self.photo = URI.parse(url)
  end
end

And then I test it out:

m = Model.new
m.photo_url = "https://s3.us-east-2.amazonaws.com/mybucket/sports-grill-miami.jpg"
m.save!
m.photo.url(:thumb)
"//s3.us-east-2.amazonaws.com/mybucket/buckets/photos/000/000/005/thumb/sports-grill-miami.jpg?1495237443" 

Why is the HTTPS protocol missing? This is crashing my android application because it requires a protocol to connect to URL. Do I need to hardcode the URL or can Paperclip handle this?


回答1:


You need to explicitly add the protocol to your configuration:

:s3_protocol => :https



回答2:


You need to specify the scheme on paperclip configuration as below:

config.paperclip_defaults = {
      s3_host_name: "s3.#{ENV.fetch('AWS_REGION')}.amazonaws.com",
      storage: :s3,
      :s3_protocol => :https, # <- added this
      s3_credentials: {
          bucket: ENV.fetch('S3_BUCKET_NAME'),
          access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
          secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
          s3_region: ENV.fetch('AWS_REGION'),
      }
  }

:s3_protocol => :https will assign the scheme https to the url's generated for your amazon s3 assets. Refer to documentation for more details.



来源:https://stackoverflow.com/questions/44080512/paperclip-is-missing-the-protocol-https-with-amazon-s3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!