错误原因
这是我基于Laravel自带的验证组件写的验证代码:
在大多数情况下是正常的,但是前端上传图片时,偶尔会报The file failed to upload这个莫名其妙的错误,要知道我的代码中是没有任何关于这个报错的的提示的。经过多次排查,基本上可以认定是图片大小引起的错误。
首先,php默认配置的上传文件的大小为2M,这个我们可以在php.ini配置文件中看到;
upload_max_filesize=2M
post_max_size=8M
其次,我在laravle验证中限制的大小也是2M,laravel默认内部根据php的配置调用了验证,所以我做的这个验证根本没生效,报的错也是laravel框架内部调用的。
通过系统功能表单验证类抛出的422异常:The file failed to upload.
,通过查看 resources/lang/en/validation
文件可以看到,实际框架层调用的是 uploaded
验证。
解决方案
修改php默认配置,上传图片限制大小更改后,图片上传问题成功解决,我这里改的是20M,大家可以根据项目实际情况修改。
upload_max_filesize=20M
post_max_size=20M