在Heroku上强制执行文件上传大小?

时间:2011-11-07 02:43:46

标签: ruby-on-rails ruby file-upload heroku

在Heroku上有一个Rails应用程序。我想尽可能限制文件上传的大小。该文件作为StringIO对象处理,因此文件内容将在内存中处理(无需将中间文件写入文件系统)。

通常,我会限制Web服务器上的上传大小。但是使用Heroku,有什么选择?我意识到我可以使用Flash上​​传器,但我希望尽可能避免在客户端上使用Flash。

2 个答案:

答案 0 :(得分:2)

Heroku将请求实体限制为某个小尺寸(30MB),并且还将所有请求/响应周期限制为30秒。两者都是硬规则,必须与之共存。

默认情况下,Rails会将文件上传到磁盘,并在将它们交给您的应用程序之前将它们转换为Tempfile实例。

答案 1 :(得分:0)

您可以在应用服务器前运行NGINX来强制执行此约束。

heroku这相当简单,您需要nginx.confbuildpack

# nginx.conf
http {
    #...
    client_max_body_size 100m;
    #...
}

注意:但请注意,在heroku上,NGINX在你的dynos中运行(即每个实例的本地)。

https://blog.codeship.com/how-to-deploy-nginx-on-heroku

希望有所帮助!