我得到这个错误:
Cannot call method getClientOriginalExtension() on array<int, IlluminateHttpUploadedFile>|IlluminateHttpUploadedFile|null.
运行phpstan
这代码:
$imageName = time() . '.' . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(base_path() . '/public/uploads/', $imageName);
我试着添加$request->file('image')[0]->getClientOriginalExtension();
,但没有修复它
您正在得到这个错误,因为getClientOriginalExtension
在这个联合类型中不存在:array<int, IlluminateHttpUploadedFile>|IlluminateHttpUploadedFile|null
这个联合类型被使用,因为静态分析无法知道$request->file('image')
是否会返回一个文件,文件数组或null
首先你可以做一个null
检查。您要获取的文件可能不存在。
$file = $request->file('image');
if ($file === null) {
// Handle this case
}
然后,您可以检查是否有多个文件或只有一个:
if ($file instanceof UploadedFile) {
// It's one file
} else {
// It's an array of files
}
但是如果在你的用例中你确定它总是一个文件,你可以这样做:
/** @var IlluminateHttpUploadedFile $file */
$file = $request->file('image');