我有一个RoR网站,用户可以上传照片。我使用paperclip gem上传照片并将它们作为文件存储在服务器上。我打算转移到Amazon S3来存储照片。我需要将所有现有照片从服务器移动到Amazon S3。有人能告诉我移动照片的最佳方式。谢谢!
答案 0 :(得分:9)
您需要登录AWS控制台并创建存储桶结构以方便您的图像。 S3和Paperclip都没有任何从文件系统批量迁移的工具 - > s3,您需要使用工具s3cmd。特别是,您对s3cmd sync命令感兴趣,其中包括:
s3cmd sync ./public/system/images/ s3://imagesbucket
如果您有任何图像网址硬编码到您的数据库(la markdown /模板代码),这可能有点棘手。一种选择是手动更新您的网址以指向新存储桶。或者,您可以rack-rewrite。
答案 1 :(得分:7)
您可以通过在Amazon S3上创建一个与Rails应用程序上的public
目录具有相同文件夹结构的存储桶轻松完成此操作。
例如,您可以在Amazon S3上创建一个名为 MyBucket 的新存储桶,其中包含一个名为 images 的文件夹。您只需将Rails应用程序的images
文件夹中的所有图像移动到该新存储桶的images
文件夹即可。
然后,您可以将应用设置为使用资源主机,例如此答案描述:is it good to use S3 for Rails "public/images" and there an easy way to do it?
如果您正在使用image_tag
或其他标签帮助程序(javascripts,样式表等),那么它将使用asset_host
用于生产环境并正确生成S3存储桶的URL。
答案 2 :(得分:6)
我发现这个脚本负责使用rake任务将图像移动到Amazon S3存储桶。 https://gist.github.com/924617