14

我正在尝试上传图像,尽管每次我提交它都会返回 store() on 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

4 回答 4

26

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

喜欢:

<form method="POST" enctype="multipart/form-data" name="formName">
于 2019-01-08T06:19:00.253 回答
5

始终使用表单输入中缺少的名称属性获取数据

改变

<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();
}
于 2017-02-07T11:58:37.393 回答
4

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

if ($request->file('imgUpload1') == null) {
    $file = "";
}else{
   $file = $request->file('imgUpload1')->store('images');  
}
于 2017-12-02T05:01:59.397 回答
1

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

<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>
于 2017-07-02T00:14:43.063 回答