Rails 4,Paperclip,Amazon S3配置Amazon路径

6
我正在尝试配置Paperclip返回的端点,该端点在我的对象成功上传到Amazon's S3服务时返回。上传和一切正常工作,但是返回的URL不正确以显示上传内容。
目前,返回的URL是http://s3.amazonaws.com/path/to/my/items(如下图所示)。
我希望根路径不是s3.amazonaws.com,而是特定于存储桶位置的根路径(例如s3-us-west-1.amazonaws.com/path/to/my/items)。
我应该在哪里尝试配置不同的URL路径(从s3.amazonaws.com到其他内容)?我尝试将上述路径的URL添加到配置文件中,例如:
  #Paperclip Amazon S3
  config.paperclip_defaults = {
      :storage => :s3,
      :url => "https://s3-us-west-1.amazonaws.com/",
      :s3_credentials => {
          :bucket => ENV['S3_BUCKET_NAME'],
          :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
          :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']

      }

  }

这似乎没有任何影响。请指导我在哪里设置此选项!

提前感谢!


:url => "https://s3-us-west-1.amazonaws.com/" 替换为 :s3_host_name => 's3-us-west-1.amazonaws.com',你就可以了。 - Joshua Pinter
3个回答

11

如果您要使用S3,我们发现您必须在实际模型中包含S3凭据(而不仅仅是配置文件)。这是我们的做法:

模型

#Image Upload 
Paperclip.options[:command_path] = 'C:\RailsInstaller\ImageMagick'
has_attached_file :image,
        :styles => { :medium => "x300", :thumb => "x100" },
        :default_url => "****",
        :storage => :s3,
        :bucket => '****',
        :s3_credentials => S3_CREDENTIALS,
            :url => "/:image/:id/:style/:basename.:extension",
            :path => ":image/:id/:style/:basename.:extension"

config/application.rb

  # Paperclip (for Amazon) (we use EU servers)
  config.paperclip_defaults = {
    :storage => :s3,
    :s3_host_name => 's3-eu-west-1.amazonaws.com'
  }

config/s3.yml

#Amazon AWS Config
development:
  access_key_id: **********
  secret_access_key: **************
  bucket: ****

production:
  access_key_id: ***********
  secret_access_key: ***********
  bucket: ****
希望这有所帮助?

2
您还可以将 :s3_host_name 键放在 Model 中。 - Joshua Pinter
我只需要在config/aws.yml中编写我的凭据,而不是在每个模型中编写它,这样就可以工作了。 - Pedro Moreira Mamede

0

当我迁移到Spree 2.2时,我也遇到了同样的问题,至今仍不确定如何正确解决它。看起来像是Paperclip应该从配置中更新路径,但它没有。

缺乏更好的解决方案,我已经覆盖了Spree::Image类,就像这样:

1 Spree::Image.class_eval do
2   has_attached_file :attachment, 
3     styles: { mini: '48x48>', small: '100x100>', product: '240x240>', large: '600x600>' },
4     default_style: :product,
5     url: '/spree/products/:id/:style/:basename.:extension',
6     path: 'products/:id/:style/:basename.:extension',
7     convert_options: { all: '-strip -auto-orient -colorspace sRGB'8 end 

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接