我目前正在使用带有 Carrierwave gem 的 Rails 3.2 将文件上传到 Amazon S3。现在我需要能够处理用户提交的大于 5GB 的文件,同时仍然使用 Carrierwave gem。 Carrierwave 或 Fog 是否有任何其他 gem 或分支可以处理 5GB 以上的文件上传到 S3?
编辑:我不想重写一个完整的 Rails 上传解决方案,所以像这样的链接没有帮助:https://gist.github.com/908875 .
最佳答案
我想出了如何做到这一点,并且现在可以正常工作了。在正确的 config/environment
文件中,添加以下内容以将文件以 100MB block 的形式发送到 Amazon S3:
CarrierWave.configure do |config|
config.fog_attributes = { :multipart_chunk_size => 104857600 }
end
由于 fog gem 内置了分段上传(感谢 Veraticus 指出),适当的配置属性只需要通过 Carrierwave 传递到 fog 中。发送到 S3 时,我经常收到 Connection reset by peer (Errno::ECONNRESET)
错误,因此可能需要重试部分上传。
关于ruby-on-rails - 如何将大于 5GB 的文件上传到 Amazon S3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781775/