Laravel 5.8 image验证仅接受png 上传jpg/jpeg等格式报错如何解决
解决方案
- 问题原因:Laravel 5.8的
image验证规则底层依赖PHP的fileinfo扩展做文件类型识别,如果服务器未开启该扩展、或扩展配置异常,会导致无法正确识别jpg、jpeg等常见图片格式,抛出格式错误。 - 解决方案1(优先推荐):
先确认服务器PHP环境已开启fileinfo扩展,开启后原生image规则默认支持jpeg、png、gif、bmp、svg、webp等主流图片格式,无需额外修改验证规则。 - 解决方案2(兼容性更高):
直接显式指定允许的图片后缀,不依赖fileinfo的自动识别,修改控制器中的验证规则即可,调整后的代码如下:public function store() { $data = request()->validate([ 'caption' => 'required', // 按需添加允许的图片后缀,max规则可选,用来限制上传文件大小,此处2048代表2M 'image' => 'required|mimes:jpeg,png,jpg,gif,webp|max:2048' ]); Post::create($data); } - 排查小技巧:如果调整后仍然报错,可以在控制器中先打印上传文件的识别结果,确认MIME类型是否符合预期:
dd(request()->file('image')->getMimeType());
内容的提问来源于stack exchange,提问作者user12520063
相关产品推荐
相关产品推荐

