使用 Rails 和 Paperclip 设置存储桶的名称放置域样式 (bucket.s3.amazonaws.com)

Posted

技术标签:

【中文标题】使用 Rails 和 Paperclip 设置存储桶的名称放置域样式 (bucket.s3.amazonaws.com)【英文标题】:Setting up bucket's name placed domain-style (bucket.s3.amazonaws.com) with Rails and Paperclip 【发布时间】:2012-06-21 03:01:29 【问题描述】:

关于 url 选项的回形针文档:

您可以选择以域样式 (bucket.s3.amazonaws.com) 或路径样式 (s3.amazonaws.com/bucket) 放置存储桶的名称。

实际将存储桶的名称以域样式放置的设置看起来如何?我不能强制回形针生成像 bucket.s3.amazonaws.com 这样的网址,而不是 s3.amazonaws.com/bucket。

【问题讨论】:

我也遇到了这个问题 - 很想知道你是否解决了它! 【参考方案1】:

:url:path 添加到application.rbenvironment.rb 中的Paperclip 默认选项

config.paperclip_defaults = 
  storage: :s3,
  s3_credentials: 
    bucket: ENV['MY_S3_BUCKET_NAME'],
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
  ,
  url: ':s3_domain_url',                                     # ADD THIS
  path: '/:class/:attachment/:id_partition/:style/:filename' # ADD THIS

【讨论】:

【参考方案2】:

只要这样设置:

Paperclip::Attachment.default_options[:url] = ':s3_domain_url'

或者像这样:

Paperclip::Attachment.default_options.merge!(
  :url => ':s3_domain_url'
)

【讨论】:

我试过了。但它返回此错误 Paperclip::Errors::InfiniteInterpolationError 文档也让我认为这将是解决方案rubydoc.info/gems/paperclip/Paperclip/Storage/S3。但它不起作用。 您还必须使用:url 定义:path 选项,因为默认选项包括导致Paperclip::Errors::InfiniteInterpolationError 异常的":url"。 Paperclip 错误会自动修复 S3 存储的 :path 选项...除非您在 :url 的插值中使用 :s3_*_url (是的,这是一个错误)。例如使用这个:"/:class/:attachment/:id_partition/:style/:filename'". @JulienPortalier 在您的示例末尾有一个错误的单引号,这让我呆了几个小时。正确的设置是::path => "/:class/:attachment/:id_partition/:style/:filename"【参考方案3】:

如果您的存储桶名称与 DNS 兼容,那么您可以创建 url .s3.amazonaws.com/object....

但如果它不兼容 DNS,那么您将无法根据需要创建。

谢谢

【讨论】:

实际上,如果我直接使用bucket.s3.amazonaws.com/the-path-to-image访问url,我可以看到上传的图像,我只是不能让回形针以这种方式生成url。

以上是关于使用 Rails 和 Paperclip 设置存储桶的名称放置域样式 (bucket.s3.amazonaws.com)的主要内容,如果未能解决你的问题,请参考以下文章

Paperclip + Rails 与负载平衡机器

Rails 4 Paperclip with Devise,文件保存错误

Paperclip 不显示图像,而是在 rails 中显示带有 amazon s3 的标题?

使用Paperclip保存照片时,Rails app“无法分配内存”

Rails 3 和 Paperclip:“'identify' 命令无法识别”

Rails:使用 Jcrop 和回形针裁剪图像后出现重定向问题