首页 > 解决方案 > 在 null 上调用成员函数 store() 我检查了名称

问题描述

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

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

有我的引导程序:

<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');
    }

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

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

感谢帮助:)

标签: laravelimagefilestore

解决方案


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

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

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

希望这能解释它。


推荐阅读