【发布时间】:2021-07-19 16:30:56
【问题描述】:
我正在开发一个版本为 7.30.4 的 Laravel 应用程序。该项目运行良好。但是最近我将 Laravel 版本更新到了 8.0.0 版本。该应用程序也可以正常工作。但是image validation rule 不再工作了。
这是我的规则
$rules = [
'logo' => 'nullable|image|mimes:jpeg,bmp,png,jpg'
];
当我尝试上传图片时,它总是给出验证错误
'标志必须是图像。'。
但在 Laravel 7 中,我从未遇到过使用同一个文件的问题。
在我的生产服务器上,该项目在 Laravel 7.30.4 上运行。恐怕如果我在生产中更新版本,那么图像验证将不再有效。
问题是,为什么图像验证的行为不适用于以前版本的 Laravel 8.0 版本。
更新:-
- 我还检查了 jpg/jpeg 图像的问题。
- PNG 文件工作正常,但在 jpg/jpeg 图像的情况下,它总是会出现上述验证错误。
- 当我尝试上传 BMP 文件时出现错误 "不支持的图像类型。GD 驱动程序只能解码 JPG、PNG、 GIF 或 WebP 文件。”
【问题讨论】:
-
可能是您上传的图片太大,无法作为图片到达 laravel?或者你上传的图片不是真正的图片(即使扩展是正确的)
-
@N69S 否。相同的图像正在上传到生产服务器或其他 Laravel 版本为 7.30 的机器上工作正常。
-
这是一个错误并已修复 github.com/laravel/framework/issues/35417
-
Thanx @EsTeAa 我也调查过。但是除了升级 Laravel 版本之外,添加“jpg”的最佳方法是什么?