Вызов функции-члена store () при проверке имен null - PullRequest
1 голос
/ 19 января 2020

У меня появляется эта ошибка, когда я пытаюсь загрузить свой файл: Call to a member function store() on null

Я много раз читал документацию и проверял ПО, но я не могу понять, не могли бы вы мне помочь?

есть мой 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');
    }

я думаю, что это что-то глупое, но я не могу его найти.

NB: Мои URL-адреса $ imageCarbu и $ imageManger хорошо хранятся в моей БД, также html выглядит хорошо.

Спасибо за помощь:)

1 Ответ

1 голос
/ 19 января 2020

Основная причина, по которой это происходит (трудно сказать, поскольку вы не добавили свой тег формы), заключается в том, что, как уже говорили другие, у вас, вероятно, нет enctype="multipart/form-data" как части вашего тега FORM .

Почему это важно? Тип кодирования (enctype) сообщает получателю формы (на стороне сервера), что эти входящие данные (которые представляют собой просто кодированный в base64 текст) имеют границы разделения с сопровождающими типами MIME между данными формы (другими представленными входными данными) и данными файла (содержимым). файла). Без него все данные смешиваются вместе.

В вашем случае они представляются как обычные данные, и поэтому Laravel видит поле формы Ticketimg как обычную строку бессмыслицы персонажи. Это означает, что хотя Laravel говорит, что оно не равно нулю (оно может видеть строку), но оно не обрабатывает его как объект File в запросе. Оттуда он пытается вызвать store для строки, а не для файла.

Надеюсь, это объясняет это.

...