Laravel Jetstream(Livewire栈)无法上传2MB以上头像问题求助
Laravel Jetstream+Livewire 大文件头像上传失败解决办法
核心原因
Livewire默认自带2MB的文件上传大小限制,超过该值时会在前端直接拦截请求,这就是选择大文件后立刻弹出提示、未发送请求的根本原因,和你怀疑的$refs.photo.click()函数无关。
解决步骤
修改Livewire配置文件限制
打开config/livewire.php,找到max_file_size配置项,将其值调整为你需要的大小(单位为KB),比如设置为10MB:'max_file_size' => 10240,确认前端文件输入绑定
检查update-information-form.blade.php中的隐藏文件输入字段,确保wire:model绑定正确,示例如下:<input type="file" wire:model="photo" x-ref="photo" class="hidden" accept="image/jpg,image/jpeg,image/png" />无需修改
$refs.photo.click()的触发逻辑,该按钮仅用于唤起文件选择器,和上传限制无关。验证PHP配置生效
重启你的Web服务(Apache/Nginx)和PHP-FPM,确保php.ini中的upload_max_filesize和post_max_size配置已生效。可以通过创建临时文件输出phpinfo()查看当前配置值。确认Fortify验证规则
你已在app/Actions/Fortify/UpdateUserProfileInformation.php中设置了'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:10240'],该规则会在后端对文件进行二次验证,保持当前配置即可。
内容的提问来源于stack exchange,提问作者Patrick4502
相关产品推荐
相关产品推荐

