5

我目前正在使用带有 Carrierwave gem 的 Rails 3.2 将文件上传到 Amazon S3。现在我需要能够处理大于 5GB 的用户提交的文件,同时仍然使用 Carrierwave gem。Carrierwave 或 Fog 是否有任何其他 gem 或分支可以处理 5GB+ 文件上传到 S3?

编辑:我不想重写完整的 Rails 上传解决方案,所以这样的链接无济于事:https ://gist.github.com/908875 。

4

3 回答 3

7

我想出了如何做到这一点并让它现在工作。在适当的config/environment文件中,添加以下内容以将 100MB 块的文件发送到 Amazon S3:

CarrierWave.configure do |config|
  config.fog_attributes = { :multipart_chunk_size => 104857600 }
end

由于雾 gem 内置了多部分上传(感谢 Veraticus 指出),因此只需通过 Carrierwave 将适当的配置属性传递到雾中。发送到 S3 时,我经常收到Connection reset by peer (Errno::ECONNRESET)错误,因此可能需要重试部分上传。

于 2012-08-08T15:28:11.427 回答
6

您想使用S3 的分段上传功能。有用的是,Fog 确实可以处理多部分 S3 上传,如您在此拉取请求中所见。

不幸的是,Carrierwave 似乎没有内置功能来正确使用它。因此,您需要修改 Carrierwave 或手动放入 Fog 以正确上传此文件。

于 2012-08-02T17:24:07.987 回答
-2

在上传之前,您需要将文件分成小块。

看看以下内容:

http://www.ruby-forum.com/topic/1282369

http://joemiller.me/2011/02/18/client-support-for-amazon-s3-multipart-uploads-files-5gb/

无论哪种方式,您都需要拆分文件。

于 2012-08-02T16:24:53.773 回答