我得到了一个错误:
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 08: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
复制相似问题