为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Laravel 表单将多个文件上传到数据库中

使用 Laravel 表单将多个文件上传到数据库中

PHP
梦里花落0921 2021-06-09 13:13:59
我正在尝试提交一个表单,如果用户需要,可以选择上传多个文件。我不断收到错误“未定义的变量:数据”。我哪里做错了?控制器public function store(Request $request){    $this->validate($request, [        'title' => 'required|string|max:191',        'description' => 'required|string',        'date' => 'required|date|max:191',    ]);    if ($request->hasfile('file')) {        foreach ($request->file('file') as $file) {            $fileName = $file->getClientOriginalName();            $file->move(public_path().'/files/', $fileName);            $data[] = $fileName;        }    }    return logbook::create([        'title' => $request['title'],        'description' => $request['description'],        'date' => $request['date'],        'file' => json_encode($data),        'student_id_FK' => session('userID'),    ]);}
查看完整描述

2 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

$request->file('file')正在引用file表单数据(即单个文件上传),因此foreach永远不会执行该块。这$data就是未定义的原因。


你应该处理多个文件


foreach ($request->allFiles() as $file) {


...

}


查看完整回答
反对 回复 2021-06-13
?
浮云间

TA贡献1829条经验 获得超4个赞

问题是$data只有在$data[] =实际执行该行时才会创建变量。看起来情况并非如此。因此,如果没有文件,只需在添加之前定义数组即可使其工作。


$data = [];

// ...

$data[] = ...

此外,还有在一个错字hasFile方法:


if($request->hasfile('file'))

应该


if($request->hasFile('file'))

注意大小写变化。


查看完整回答
反对 回复 2021-06-13
  • 2 回答
  • 0 关注
  • 187 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信