在 null 上调用成员函数 store() 我检查了名字

Call to a member function store() on null i checked names

我尝试上传文件时出现此错误:Call to a member function store() on null

我多次阅读文档并检查了 SO 但我无法理解,你能帮我吗?

有我的 bootstrap :

<label for="Ticketimg" class="col-md-4 col-form-label text-md-center">{{ __('Ticketimg') }}</label>
 <div class="col-md-6">
     <input id="Ticketimg" type="file" class="custom-file-label @error('Ticketimg') is-invalid @enderror" name="Ticketimg" enctype="multipart/form-data" required autocomplete="Ticketimg" autofocus> @error('Ticketimg')
     <span class="invalid-feedback" role="alert">
         <strong>{{ $message }}</strong>
  </span> @enderror

还有控制器:

public function DeclareFrais($idMission, Request $request)
    {

       // $image = $request->input('Ticketimg');
        $imageCarbu = $request->input('ticketcarbu');
        $imageManger = $request->input('ticketmanger');
        $prixhotel = $request->input('PrixHotel');
        $prixcarbu = $request->input('PrixCarbu');
        $prixManger = $request->input('PrixManger');
        date_default_timezone_set('Europe/Paris');
        $pdate = date('Y-m-d H:i');
        $path = $request->file('Ticketimg')->store('public');


      // Storage::disk('local')->put('nique', $fichierFinal);
       // $test->save();
        DB::insert('exec Dfrais ?, ?, ?, ?, ?, ?, ?, ?', array($idMission, $prixhotel, $prixcarbu, $prixManger, $pdate, $path, $imageCarbu, $imageManger));

        return redirect()->action('HomeController@show')->with('succes', 'Frais déclarés');
    }

我认为它有些愚蠢,但我找不到它。

注意:我的 url $imageCarbu 和 $imageManger 很好地存储在我的数据库中,html 看起来也不错。

求助:)

发生这种情况的主要原因(很难说,因为您没有添加表单标签)是因为,正如其他人所说,您可能没有 enctype="multipart/form-data" 作为您的一部分FORM 标签。

为什么这很重要?编码类型 (enctype) 告诉表单的接收者(服务器端)传入的数据(只是 base64 编码的文本)在表单数据(其他提交的输入)和文件数据(内容)之间具有分隔边界以及伴随的 MIME 类型的文件)。没有它,所有的数据都混在一起了。

在您的情况下,它是作为常规数据提交的,因此 Laravel 将表单字段 Ticketimg 视为只是一个常规的无意义字符串。这意味着虽然 Laravel 表示它不为空(它可以看到字符串),但它不会将其视为请求中的 File 对象。从那里,它试图在字符串而不是文件上调用 store

希望这能解释清楚。