You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails/Puma/Heroku/Paperclip/Cloudinary文件上传大小限制配置位置咨询

解决Rails 5.0.6 + Paperclip + Cloudinary + Heroku环境下的文件上传大小限制问题

我之前在类似的技术栈里碰到过一模一样的问题,客户传大文件失败,翻遍了模型和config目录都没找到限制,最后发现是几个容易忽略的地方在起作用,结合你的情况,你可以按下面的顺序排查:

1. Rails 本身的请求大小限制

这是最容易踩坑的点!Rails 5.x 默认的max_request_size是10MB,刚好比你客户要传的15MB小,所以会直接拦截请求。你需要在生产环境的配置文件里调整这个值:

打开config/environments/production.rb,添加或者修改这一行:

config.action_dispatch.max_request_size = 20.megabytes # 设置成比15MB大的数值就行

改完之后记得重新部署到Heroku哦。

2. Paperclip 的大小验证

虽然你说模型里没找到相关设置,但还是再确认一下——有没有在Attachment的定义里加过大小验证?比如:

has_attached_file :your_attachment, ... # Cloudinary相关配置
validates_attachment_size :your_attachment, less_than: 10.megabytes # 这里如果有10MB限制就会拦下来

如果模型里没加,也可以通过全局配置统一设置Paperclip的默认大小限制,在config/initializers/paperclip.rb里添加:

Paperclip::Attachment.default_options[:size] = { less_than: 15.megabytes }

3. Cloudinary 的平台上传限制

Cloudinary 免费版的默认最大上传大小是10MB,这也会导致15MB的文件上传失败。你需要登录Cloudinary的控制台,找到 Settings > Upload 选项卡,调整「Maximum upload size」的数值,改成20MB或者更大就可以了。这个是第三方服务的限制,在你的Rails项目里是看不到配置的,很容易被忽略。

4. Heroku 的平台限制

Heroku 的Web Dyno默认允许的请求大小是30MB,15MB应该在范围内,所以这个可能性比较小,但如果之前通过heroku config:set设置过相关环境变量,或者使用了某些路由插件,也可以检查一下。

按这个顺序排查下来,应该就能找到限制的源头啦!

内容的提问来源于stack exchange,提问作者Chloe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:12:55