我正在尝试提交一个表单,如果用户需要,可以选择上传多个文件。我不断收到错误“未定义的变量:数据”。我哪里做错了?控制器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) {
...
}
浮云间
TA贡献1829条经验 获得超4个赞
问题是$data只有在$data[] =实际执行该行时才会创建变量。看起来情况并非如此。因此,如果没有文件,只需在添加之前定义数组即可使其工作。
$data = [];
// ...
$data[] = ...
此外,还有在一个错字hasFile方法:
if($request->hasfile('file'))
应该
if($request->hasFile('file'))
注意大小写变化。
- 2 回答
- 0 关注
- 187 浏览
添加回答
举报
0/150
提交
取消