在null - laravel 5.4上调用成员函数store()

时间:2017-02-07 11:52:33

标签: laravel laravel-5.4

我尝试上传图片,但每次提交图片时都会返回存储()null错误。我已将表单设置为enctype =" multipart / form-data"没有帮助。

有人能指出我正确的方向吗?

感谢。

控制器内的功能

public function store(Request $request){

  $file = $request->file('imgUpload1')->store('images');
  return back();

}

以下表格:

<form action="/imgupload" method="POST" enctype="multipart/form-data">
  {{ csrf_field() }}
  <div class="form-group">
     <label for="imgUpload1">File input</label>
     <input type="file" id="imgUpload1">
  </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

已解决:输入字段上缺少名称标签

4 个答案:

答案 0 :(得分:2)

我遇到了相同的问题,即要解决的问题是在打开表单标签中添加应解决的 enctype =“ multipart / form-data” 。如果没有它,laravel将无法理解该文件。

喜欢:

<form method="POST" enctype="multipart/form-data" name="formName">

希望这可以解决您的问题。

答案 1 :(得分:1)

始终使用表单输入中缺少的name属性提取数据

更改

<input type="file" id="imgUpload1">

<input type="file" id="imgUpload1" name = "imgUpload1">

并在控制器端进行一些验证,如此

$val = Validator:make($request->all ,[
    'imgUpload1' => 'required',
])

if($val->fails(){
   return redirect()->back()->with('message' => 'No file received');
})
else{
    $file = $request->file('imgUpload1')->store('images');
    return redirect()->back();
}

答案 2 :(得分:0)

您收到错误是因为您的商店功能没有从输入标签中看到您的请求中的文件,因此要修复此设置,我刚刚在下面进行了“名称”

<form action="/imgupload" method="POST" enctype="multipart/form-data">
  {{ csrf_field() }}
  <div class="form-group">
     <label for="imgUpload1">File input</label>
     <input type="file" id="imgUpload1" name="imgUpload1">
  </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

答案 3 :(得分:-1)

您需要在控制器中添加此代码

if ($request->file('imgUpload1') == null) {
    $file = "";
}else{
   $file = $request->file('imgUpload1')->store('images');  
}
相关问题