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

huo*_*ito 15 buckets ruby-on-rails amazon-s3 paperclip

关于网址选项的Paperclip文档:

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

看起来像设置实际上将桶的名称放置为域式?我不能强迫回形针生成像bucket.s3.amazonaws.com这样的网址而不是s3.amazonaws.com/bucket.

dom*_*dom 14

只需设置如下:

Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Run Code Online (Sandbox Code Playgroud)

或者像这样:

Paperclip::Attachment.default_options.merge!(
  :url => ':s3_domain_url'
)
Run Code Online (Sandbox Code Playgroud)

  • 您还必须使用`:url`定义`:path`选项,因为默认选项包含``:url``,它会导致`Paperclip :: Errors :: InfiniteInterpolationError`异常.Paperclip bug会自动修复S3存储的`:path`选项...除非你在`:url`的插值中使用:s3 _*_ url(是的,这是一个bug).例如:`"/:class /:attachment /:id_partition /:style /:filename'"`. (24认同)
  • @JulienPortalier在你的例子中有一个错误的单引号让我离开了几个小时.正确的设置是:`:path =>"/:class /:attachment /:id_partition /:style /:filename"` (2认同)

Tej*_*ran 1

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

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

谢谢