我得到了一个错误:
Cannot call method getClientOriginalExtension() on array<int, Illuminate\Http\UploadedFile>|Illuminate\Http\UploadedFile|null.
当我运行phpstan的时候
这是密码:
$imageName = time() . '.' . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(base_path() . '/public/uploads/', $imageName);
我试图添加$request->file('image')[0]->getClientOriginalExtension();
,但没有修复它
发布于 2022-06-23 00:53:55
您得到该错误是因为此联合类型中不存在getClientOriginalExtension
:array<int, Illuminate\Http\UploadedFile>|Illuminate\Http\UploadedFile|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 \Illuminate\Http\UploadedFile $file */
$file = $request->file('image');
https://stackoverflow.com/questions/72706258
复制相似问题