Rails 4,Paperclip,Amazon S3配置Amazon Path

meo*_*ww- 6 ruby-on-rails amazon-s3

我正在尝试配置当我的对象成功上传到亚马逊的S3服务时从回形针返回的端点.上传和一切正常,但返回的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']

      }

  }
Run Code Online (Sandbox Code Playgroud)

哪个似乎没有任何影响.请告知我应该在哪里设置此选项!

提前致谢!

Ric*_*eck 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"
Run Code Online (Sandbox Code Playgroud)

配置/ application.rb中

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

配置/ s3.yml

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

production:
  access_key_id: ***********
  secret_access_key: ***********
  bucket: ****
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助?

  • 您也可以将`:s3_host_name`键放在**Model**中. (2认同)