首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel 9 phpstan

Laravel 9 phpstan
EN

Stack Overflow用户
提问于 2022-06-21 19:38:00
回答 1查看 209关注 0票数 0

我得到了一个错误:

代码语言:javascript
运行
复制
Cannot call method getClientOriginalExtension() on array<int, Illuminate\Http\UploadedFile>|Illuminate\Http\UploadedFile|null.

当我运行phpstan的时候

这是密码:

代码语言:javascript
运行
复制
$imageName = time() . '.' . $request->file('image')->getClientOriginalExtension();
$request->file('image')->move(base_path() . '/public/uploads/', $imageName);

我试图添加$request->file('image')[0]->getClientOriginalExtension();,但没有修复它

EN

回答 1

Stack Overflow用户

发布于 2022-06-23 08:53:55

您得到该错误是因为此联合类型中不存在getClientOriginalExtensionarray<int, Illuminate\Http\UploadedFile>|Illuminate\Http\UploadedFile|null使用此联合类型是因为静态分析无法知道$request->file('image')是否将返回一个文件、文件数组或null

所以,首先,您可以做一个null检查。您要获取的文件可能不存在。

代码语言:javascript
运行
复制
$file = $request->file('image');

if ($file === null) {
    // Handle this case
}

然后,您可以检查是否有多个文件或只有一个:

代码语言:javascript
运行
复制
if ($file instanceof UploadedFile) {
    // It's one file
} else {
    // It's an array of files
}

但是,如果在用例中确定它总是一个文件,则可以这样做:

代码语言:javascript
运行
复制
/** @var \Illuminate\Http\UploadedFile $file */
$file = $request->file('image');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72706258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档