使用指定的路径前缀将映像从一个S3存储桶复制到另一个存储桶

时间:2015-03-12 13:20:34

标签: ruby-on-rails ruby amazon-s3 paperclip aws-sdk

我已经安装了S3存储桶,它包含照片库的图像,使用PaperClip从我的Rails应用程序上传。可以通过以下任意网址访问图片,例如:http://s3.amazonaws.com/oldbucket/images/files/000/001/920/original/40a6885fc09c8ed4e1e3745d7f7fb770.jpg?1415766995

请考虑以下要求,建议我最好的选择:

  1. 我必须将这些图像复制到另一个AWS中的另一个S3存储桶 帐户
  2. 我想根据具体情况制作新的图片网址 模式,如:... / newbucket / {userid} / {galleryid} / {image-size} .jpg
  3. 我想根据大小创建每个图像的多个版本 (原件,缩略图和图标)
  4. 任何使用Rails gem或上述软件的选项都会有所帮助。

    由于

1 个答案:

答案 0 :(得分:0)

为此,您需要添加carrierwave gem来保存远程网址中的图片。你也可以用回形针。

首先创建种子文件,而不向您的应用添加carrierwave上传器。我正在考虑将User作为模型,将avatar视为图像。

User.all.each{|u| puts user.avatar.url}`

现在移除paperclip并添加carrierwave这将为您提供所有图片的列表。现在将其添加到要添加此图像的模型的种子文件中。

class Modelx
  mount_uploader :avatar, AvatarUploader
end

所以你的种子文件应该有像。

这样的条目
Modelx.create([{:avatar_remote_url => image_url1}, {:avatar_remote_url => image_url2},.....])

您可以使用carrierwave设置特定路径并创建多个维度图像。

对于carrierwave here的参考网址。