使用Carrierwave将大文件上传到S3

时间:2013-12-20 07:48:57

标签: file-upload heroku amazon-s3 carrierwave large-files

所以我需要将大文件(几GB大的zip文件)上传到S3,我希望Carrierwave能够管理这些文件的下载/分发。

意思是,当用户付费时,Carrierwave可以自动生成动态URL并将其发送给他们。我已经知道如何做到这一点,但我刚刚想到我从来没有通过Carrierwave上传大于几十MB的文件,更不用说几个GB到S3了。

鉴于HTTP连接的瑕疵,我认为这是一种次优的方式。

我没有那么多要上传的文件(最多10到20个),用户也不会上传它们。它将是一个店面,客户将购买/下载文件,而不是上传文件。

如果我有办法将文件分别上传到我的S3存储桶(比如FTP,git或其他一些机制),然后通过Carrierwave以某种方式将其链接到我的应用程序,那将是很好的。

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

此外,请不要忘记,当您首先上传文件时,您将遇到Heroku 30秒超时。

不过不用担心,有选择:

  • 直接上传 - S3支持直接上传,您可以在其中提供直接上传到s3绕过Heroku的表单,然后您会收到一个回调到您的应用程序的回调,其中包含您要处理的上传文件详细信息(https://github.com/dwilkie/carrierwave_direct
  • 上传到S3,然后在应用程序中公开存储桶/文件夹以连接到您的模型。我们与许多客户一起做这种方法。他们使用传输(Mac客户端)将大型资产上传到S3,然后访问他们的应用程序以将资产链接到Rails模型。

另外,我很确定S3是基于HTTP的服务,所以你只能通过HTTP上传。