如何允许用户上传到s3,但不使用自己的服务器资源

时间:2012-10-16 18:37:24

标签: ruby-on-rails amazon-s3

如何允许用户在网站上传图像,但实际上传完全在亚马逊的服务器上完成(这样就不会给自己的服务器带来上传吞吐量负担)。

有人可以解释一下这是如何执行的吗?

即。用户想要上传图像,而不是将文件流式传输到我的服务器,然后从我的服务器上传到亚马逊的s3服务,它完全绕过我的服务器并将其发送到亚马逊。

3 个答案:

答案 0 :(得分:1)

您可以查看亚马逊提供的these docs

您可以使用SWF上传程序或this gem来实施该过程。

答案 1 :(得分:0)

CarrierWave可与CarrierWaveDirect一起使用,将图片直接上传到S3。这也允许您在后台作业中处理图像。

但是,如果您想完全消除dynos的上传和处理负担,请查看Cloudinary,这是唯一的,因为它在服务器上执行所有图像处理并为它们提供存储。 / p>

答案 2 :(得分:-1)

如果您使用的回形针无法进行以下操作?

在config

中创建一个s3.yml文件
development:
  bucket: bucket-dev
  access_key_id: xxx
  secret_access_key: xxx
test:
  bucket: bucket-test
  access_key_id: xxx
  secret_access_key: xxx
production:
  bucket: bucket-pro
  access_key_id: xxx
  secret_access_key: xxx

#paperclip
has_attached_file :photo,
  :styles => {
   :thumb=> "100x100#",
   :small  => "400x400>" },
   :storage => :s3,
   :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
   :path => "/:style/:id/:filename"