gpt4 book ai didi

ruby-on-rails-3 - 使用 Paperclip 重新处理 S3 Assets

转载 作者:行者123 更新时间:2023-12-04 19:46:22 24 4
gpt4 key购买 nike

背景:

我大致按照 Ryan Bates Railscast #182 对图像上传实现了用户定义的裁剪.

这在设置为 :file 存储方法时有效,但在设置为 :s3 时无效。在添加中间裁剪步骤之前,S3 存储运行良好。

从服务器日志来看,它似乎是在本地寻找源文件:

[paperclip] An error was received while processing: #<Paperclip::Errors::NotIdentifiedByImageMagickError: /profiles/pictures/000/001/543/original/headshot.jpg is not recognized by the 'identify' command.>

此文件存在于 S3 上,但此时不在本地,因为上传是在裁剪之前(以及之后)进行处理的。

我的问题:

如何在第二个流程步骤之前将文件从 S3 下载到本地服务器?

注意我已经看过关于 SO 的其他答案。

Paperclip looking for file locally for reprocessing when using S3 – 似乎相关,但唯一的答案是降级 Paperclip。我不能那样做,此外,这个答案既没有被赞成也没有被接受。

Error reprocessing in Paperclip 2.3.5 – 这是关于回形针的旧版本。

其他想法:

我想到另一种方法是将文件存储在本地直到它被裁剪,然后使用 DelayedJob 或类似的东西稍后将它上传到 S3。不过这会带来更多工作,所以我宁愿暂时避免使用它。

最佳答案

为了更好地了解发生了什么,看到您的模型设置会很酷。具体来说,我正在寻找“has_attached_file”设置。

只是为了涵盖我正在寻找的基础知识:这是一个例子

 has_attached_file :picture,
path: <optional, default is fine.>
url: ':s3_alias_url',
s3_protocol: 'https',
s3_host_alias: 'cdn.<something>.com' (or, s3.amazonaws.com/bucketname/,
storage: :s3,
s3_credentials: Proc.new{ |a| a.instance.credentials }

当您重新处理图像时,应将其放入临时文件并在那里进行处理,然后使用这些设置重新上传。

基于 profiles/pictures/000/001/543/original/headshot.jpg 它几乎看起来像是在抓取您的路径变量,但不会转到您的 s3 存储桶来获取该图像。所以我会特别检查存储值。

有了更多信息,我可以适本地更新我的答案。

关于ruby-on-rails-3 - 使用 Paperclip 重新处理 S3 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com