使用postman在Laravel 5.5中调用null上的成员函数store()

时间:2018-06-10 08:11:36

标签: laravel laravel-5 storage postman

我正在使用Postman测试文件上传,但我总是遇到此错误。我已经尝试在Postman请求中添加和删除标题“multipart / form-data”而没有结果。

Postman screenshot

我的代码:

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 :(得分:1)

您收到错误,因为您的请求中未正确设置文件。

由于$request->file('file')返回null,并且您尝试在null上调用方法,导致异常。

当使用Postman向Laravel发出PUT或PATCH请求时,必须采取与平常略有不同的方法。

由于Laravel处理PUT和PATCH请求的方式,您需要在Postman中将请求作为POST请求发送,并在标头中提供值_method PUT。这就是Laravel所期望的。

如果这是必填字段,我还建议将文件的验证规则更改为以下内容:

'file' => 'file|required'

这样可以更轻松地排查API。如果在请求中未检测到文件,则将提供JSON错误响应。