在 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。
希望这能解释清楚。
我尝试上传文件时出现此错误: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。
希望这能解释清楚。