Laravel FileBag上传文件数量限制为20个的问题求助
解决Laravel批量照片上传最多20张的问题
嘿,我注意到你的Laravel应用批量上传照片时最多只能传20张,不管文件大小——这几乎肯定是PHP的默认配置限制,而不是Laravel的FileBag本身的问题。从你提供的请求负载能看到第21个文件的内容被截断了,正好符合这个特征,下面一步步来解决:
1. 检查PHP的max_file_uploads配置
PHP默认的max_file_uploads值就是20,它限制了一次HTTP请求里最多能上传的文件数量,超出的部分会被自动截断。
解决步骤:
- 找到你的PHP配置文件(
php.ini,不同环境路径不同:Linux下可能是/etc/php/8.x/fpm/php.ini,Windows下通常在PHP安装目录里) - 修改
max_file_uploads为你需要的数量,比如:max_file_uploads = 100 - 重启你的Web服务器(Apache/Nginx)和PHP-FPM(如果用的是FPM模式)
- 可以在Laravel里临时加个路由确认配置是否生效:
访问这个路由,搜索Route::get('/php-info', function() { phpinfo(); });max_file_uploads就能看到当前生效的值。
2. 检查Laravel的验证规则
如果PHP配置没问题,再看看你的控制器或表单请求里的验证规则,有没有手动限制文件数量:
比如控制器里可能有这样的代码:
$request->validate([ 'photos' => 'required|array|max:20', // 这里的max:20限制了数组长度 'photos.*' => 'image|mimes:jpeg,png,jpg,gif|max:2048', ]);
如果是这样,把max:20改成你需要的数值就行。
3. 额外配置检查(可选)
虽然你说文件大小不影响,但还是建议确认以下两个配置,避免总文件大小导致的上传异常:
upload_max_filesize:单个文件的最大允许上传大小post_max_size:整个POST请求的最大大小(这个值要大于upload_max_filesize,因为要包含所有文件和表单数据)
可以改成这样的示例值:
upload_max_filesize = 10M post_max_size = 50M
按照上面的步骤排查,应该就能解决批量上传的数量限制问题了。
内容的提问来源于stack exchange,提问作者Jan Ciołek
相关产品推荐
相关产品推荐

