Вызов функции-члена store () в null в Laravel 5.5 с использованием почтальона - PullRequest
0 голосов
/ 10 июня 2018

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

Скриншот почтальона

Мой код:

public function update(Request $request, $id) {
    $validator = Validator::make($request->all(), [
        'name' => 'string|max:255',
        'second_name' => 'string|max:255',
        'description' => 'string|max:255',
        'gender' =>  'string|max:255',
        'admin' =>  'boolean',
        'birthday'  => 'string|max:255',
        'email' => 'string|email|max:255|unique:users',
        'password' => 'min:6|required_with:password_confirmation|same:password_confirmation',
        'file' => 'file',
    ]);

    if ($validator->fails()) {
        return response()->json(['error' => $validator->errors()], 401);
    }

    $user = User::find($id);
    $user->name = $request->input('name');
    $user->second_name = $request->input('second_name');
    $user->description = $request->input('description');
    $user->gender = $request->input('gender');
    $user->admin = $request->input('admin');
    $user->birthday = $request->input('birthday');
    $user->email = $request->input('email');
    $user->imageUrl = $request->file('file')->store('images');

    if($user->save()) {
        return new $user;
    }
}

1 Ответ

0 голосов
/ 10 июня 2018

Вы получаете сообщение об ошибке, поскольку файл неправильно настроен в вашем запросе.

В результате $request->file('file') возвращает значение null, и вы пытаетесь вызвать метод с нулевым значением, что приводит к исключению.

При выполнении запроса PUT или PATCH к Laravel с использованием Postmanнужно использовать несколько иной подход, чем обычно.

Из-за того, как Laravel обрабатывает запросы PUT и PATCH, вам нужно будет отправить свой запрос в Postman как запрос POST и предоставить _method значение * 1009.* в шапке.Это то, что ожидает Laravel.

Если это обязательное поле, я бы также предложил изменить правило проверки для файла следующим образом:

'file' => 'file|required'

Этоупростит поиск неисправностей в вашем API.Ответ об ошибке JSON будет предоставлен, если файл не был обнаружен в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...