Php Laravel如何检查文件上传是否成功?

Php Laravel如何检查文件上传是否成功?,php,laravel,validation,file-upload,Php,Laravel,Validation,File Upload,我想知道我是否正在使用ValidationController来验证文件上载,并将其保存在我的UploadController中: $file = $request->validated(); 在此之前: if ($request->hasFile('file') { $file = $request->file('file'); if ($file->isValid()) { [...] } } 是否需要执行$request->hasFile('

我想知道我是否正在使用ValidationController来验证文件上载,并将其保存在我的UploadController中:

$file = $request->validated();
在此之前:

if ($request->hasFile('file') {
  $file = $request->file('file');
  if ($file->isValid()) {
    [...]
  }
}
是否需要执行
$request->hasFile('file')
-block?

在ValidationController中,我已经设置了验证规则,即文件是必需的,并且必须是pdf,因此
hasFile('file')
可能是多余的。如果文件没有被上传,那么我会被验证器重定向


我知道
$file->isValid()
部分会检查文件是否已成功上载,因此即使在文件验证之后,这也可能是必要的。

首先,您必须在Laravel文件夹中运行
php artisan storage:link
,以在Laravel应用程序中设置存储链接。 验证器将帮助您了解文件是否已上载

hasFile函数检查文件是否上传,因此通过该方法,我们可以检查文件是否成功上传,并且您可以为用户方便的webapp发出警报

    public function store(Request $request){
    $this->validate($request, [
        'file' => 'image|nullable|max:1999'
    ]);
    // Handle File Upload
    if($request->hasFile('file')){
        // Get filename with the extension
        $filenameWithExt = $request->file('file')->getClientOriginalName();
        // Get just filename
        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
        // Get just ext
        $extension = $request->file('file')->getClientOriginalExtension();
        // Filename to store
        $fileNameToStore= $filename.'_'.time().'.'.$extension;
        // Upload Image
        $path = $request->file('file')->storeAs('public/file', $fileNameToStore);

       return redirect()->back() ->with('alert', 'Updated!');
    } else {
        $fileNameToStore = 'noimage.jpg';
    }

}
甚至有必要执行
$request->hasFile('file')
-block吗

主要问题是,在
$request
没有名为
file
的文件的情况下,是否会执行此逻辑


如果没有
hasFile
调用,在
file
中缺少文件的请求将在
$file->isValid()
行上抛出一个错误(“调用成员函数isValid()on null”),因为
$file
将为null。

我知道所有这一切,我在问是否有必要执行“hasFile()”和“isValid()”)'在我已经验证它之后..我不知道你想做什么,如果你已经通过其他方式验证了它,只需执行以下$request->file->store('files');其中file是你的文件夹名我不知道,它不是我在评论中指定的meLater。。即使我不知道是谁否决了我,请检查@DilipHirapara这并没有回答我的问题,但谢谢,但如果没有上传文件,我将通过行“$file=$request->validated()”重定向到表单,因为此字段的验证规则是必需的,因此此块将不再执行,这就是我想说的ask@ofmiceandmoon你没有在问题中包括你的验证规则,因此我在解释问题时要谨慎。如果您已经测试过该验证,并且对它感到满意,我会说您可以放弃
hasFile
条件。我没有包括它们,但编写了它是必需的,我不想再出现另一个代码段。谢谢你的回答。我只是不确定在验证之后这个块是否是多余的。如果您的验证正确地强制文件存在-您的验证规则应该包括
required
file
规则-那么它是多余的。