Heroku文件存储

48

Heroku只有100MB的文件存储容量,对吗?我正在开发一个低级别的Rails应用程序,我非常喜欢Heroku,但如果我的应用程序允许每个用户上传一张图片,我可能很快就会用完空间...是否有一种简单的解决方案,可以为档案照片等提供替代文件存储?

Heroku仅有100MB的文件存储空间。如果我的应用程序允许每个用户上传一张照片,可能很快就会用完空间。是否有一个简单的解决方案,可以让我为档案照片等提供替代文件存储服务?请注意保留HTML标记。

28
虽然您希望在Heroku上使用S3(因为文件空间只是暂时的,不会持久存在),用于存储诸如个人资料图片之类的东西(请参见下面Codeglot的答案),但我想指出100MB限制仅适用于slug(应用程序的编译源代码和gems)。实际上,您的/tmp目录可以容纳非常大的文件(我认为曾经听说过可以在那里临时存储4GB大小的文件)。但是,如果您的dyno重新启动,您将失去其中的任何内容,因此它只能用作临时存储空间,而不是永久性的。 - Riley Dutton
1
此外,关于这个主题,请参阅Heroku开发中心的文章在这里 - John Beynon
3个回答

24

1
我发现Cloudinary是一个完美的解决方案,现在它提供了10 GB 的免费存储空间。此外,一定要检查这个Django 应用程序:https://github.com/klis87/django-cloudinary-storage,它仅需要更改一些设置,而不像原始的Cloudinary 应用程序需要更改模型、视图和模板中的代码! - Karim Sonbol

21

请查看这篇博客文章

在你的模型中。

has_attached_file :picture, 
                   :styles => {:large => "275x450>"},
                   :storage => :s3, 
                   :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
                   :path => "appname/:attachment/:style/:id.:extension"

在您的配置目录中的s3.yml文件中:

    development:
      bucket: bucketname
      access_key_id: key
      secret_access_key: key

    production:
      bucket: bucketname
      access_key_id: key
      secret_access_key: key

然后去Amazon S3注册一个存储桶:http://aws.amazon.com/s3/


5
链接已失效。你知道是否有新的链接可用吗? - Donal Rafferty
1
@DonalRafferty 它仍然在Wayback Machine上。 - Lena

2

最简单的解决方法是使用api.imgur.com,它允许您每小时免费上传1250张图片。

您只需注册并获取客户端id,然后需要将图像数据作为表单数据发送POST请求到

https://api.imgur.com/3/upload

然后你会在响应数据中获得已上传图像的链接,您可以将其存储在数据库中,然后像其他图像链接一样从前端访问该图像。

更多信息请查看:

Imgur API文档链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接