3

我正在使用CarrierWave为 Rails 构建文件上传器。我对它的 API 感到非常满意,但我似乎无法即时剪切超过限制的文件上传。

我找到了这个插件进行验证,但问题是它发生上传完成后。在我的情况下这是完全不可接受的,因为任何用户都可以通过上传一个巨大的文件来关闭网站

因此,我认为方法是使用一些 Rack 配置或中间件来限制接收到的 POST 正文大小。作为上下文,我在 Heroku 上托管。

*我知道https://github.com/dwilkie/carrierwave_direct但它不能解决我的问题,因为我必须先调整大小并丢弃原始大图像。

4

1 回答 1

1

快速而肮脏的解决方法是使用 javascript 上传器并在那里验证。如果这还不够好:

  • 如果您将应用程序服务器切换到rainbows,您可以使用名为client_max_body_size的设置。

  • 如果您正在使用另一个应用程序服务器,您将不得不寻找等效的设置(可能不存在),或者提出某种中间件(根据您的应用程序服务器可能会也可能不会) . 如果您编写一个干净的中间件来执行此操作,我想很多人会感兴趣,因为目前似乎还没有。

  • 如果您没有使用 heroku,您可以使用 nginx 的 client_max_body_size 设置,或者任何与 apache 等效的设置。

于 2013-08-28T15:26:10.797 回答