在我的Rails 4应用程序中,我使用PaperClip将我的图像存储在S3上。我在S3存储桶中的任何图像都是这样的:
现在,为了通过 AWS CloudFront CDN 提供图片,我正在关注this article建议在我的图片模型中设置:path
属性。这里的确切价值是什么?
has_attached_file :file, styles: { small: '120x50', medium: '350x350' }, :path => "images/files/../../:id/:style/:filename"
具体来说,我不确定如何处理上面图片网址中的 / 000/001 / 部分。因为这些是PaperClip在S3上保存图像时创建的任意文件夹。否则,:id, :style and :filename
正在运行时正确替换它们的值。
答案 0 :(得分:0)
使用文件系统时,每个文件夹中可存储的文件数量存在限制。
在Linux系统上,如果要在文件夹中存储超过32,000个文件,则会收到错误消息。 出于这个原因,paperclip自动将您的文件分区为单独的文件夹,这就是上面示例中000/001/920所做的事情.....这是必要的。
它取对象id为1920,并在其前面加上0来获得9位数,然后将它们分成不同的分区。如果您必须手动设置路径,而不是让回形针处理此逻辑,您还必须手动对文件进行分区,否则最终会遇到大问题。
答案 1 :(得分:0)
我认为您不需要做任何事情:路径,您需要确保config.action_controller.asset_host指向您的CloudFront域名,而不是S3
答案 2 :(得分:0)
您正在寻找的符号是:id_partition。
所以整条路径都是
images/files/:id_partition/:style/:filename