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

问题描述 投票:0回答:5

我正在尝试上传图像,但每次提交时都会返回 store() 错误。我已将表单设置为 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>
laravel laravel-5.4
5个回答
33
投票

我遇到了同样的问题,我要解决的问题是在打开的表单标签中添加

enctype="multipart/form-data"
应该修复它。如果没有它,laravel 将无法理解该文件。

喜欢:

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

6
投票

数据总是使用表单输入中缺少的名称属性来获取

改变

<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();
}

4
投票

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

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

2
投票

您收到错误,因为您的商店功能没有从输入标记中看到您的请求中的文件,因此要修复此问题,请设置我在下面所做的“名称”

<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>

0
投票

试试这个,兄弟简单的方法检查'null'

if($request->file('imgUpload1')!=null){
   $file=$request->file('imgUpload1')->store('images');
}
© www.soinside.com 2019 - 2024. All rights reserved.