【问题标题】:Replacing Thumbnail Style in S3 using Paperclip (Rails 4)使用 Paperclip (Rails 4) 替换 S3 中的缩略图样式
【发布时间】:2014-01-29 18:24:22
【问题描述】:

这可能违反直觉,但是我想替换当前存在的回形针附件样式或在 has_attached_file 代码之外创建一个新样式。 (缩略图存储在 S3 中)。

我正在使用这款名为 SmartCropper 的出色宝石,让我可以拍摄图像并围绕焦点裁剪到我选择的尺寸。

它的代码是这样的:

SmartCropper.from_file(banner.url(:medium)).smart_crop(350,630)

它使用的是我已经用回形针(中等大小的横幅)裁剪的缩略图,但我希望这段代码覆盖(在 S3 存储桶中)横幅中定义的另一种缩略图样式,如 cropped拇指

不幸的是,似乎

banner.url(:medium) = SmartCropper.from_file(banner.url(:medium)).smart_crop(350,630)

是一个非常错误的解决方案尝试。我还仔细阅读了一些用于存储方法的 S3 API,我确实找到了这些方法,但是没有一个只接受路径和文件。桶系统对于回形针来说相当曲折,因此简单的存储方法似乎不是最佳选择。

我尝试研究是否可以将其用作自定义处理器,但我无法真正找到我想要的。

我所做的一切尝试将缩略图样式更改为该新图像都导致了 S3 错误。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails amazon-s3 ruby-on-rails-4 paperclip


    【解决方案1】:

    Paperclip 方法 'url' 和 'path' 只是根据您的路径设置生成字符串。因此,如果您已经上传了文件,则可以使用以下代码获取自定义拇指的路径:

    banner.path(:my_custom_style) #this will be the path to save your custom thumb to
    

    这里有两件重要的事情:

    1. 首先,不要在 has_attached_file 和默认的 Paperclip 配置中声明您的样式(即 :my_custom_style)。否则,如果您在未指定排除项的情况下运行重新处理,您将丢失自定义拇指。
    2. 使用“路径”而不是“网址”,因为您需要的只是相对于您的 s3 存储桶的路径。

    下一步是最简单的一步。如果您使用aws-sdk gem,并使用您的凭据配置它,则将文件上传到指定路径很简单,如下所示:

    s3 = AWS::S3.new
    s3.buckets[YOUR_BUCKET].objects[path].write(binary_data)
    

    【讨论】:

    • 这里需要更多的调整,但这是通用的解决方案!事实证明,我需要删除第一个 / 自动在我的缩略图路径中,以便将图像存储在 S3 中。感谢您的帮助!
    • @Serg 您可以将上面的评论添加到解决方案中吗?这种方式很容易错过。
    • Paperclip 的默认配置不会在path 助手的结果中添加第一个斜杠,所以我认为它不应该成为答案的一部分。
    猜你喜欢
    • 2014-01-18
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    相关资源
    最近更新 更多