当我尝试在控制器内部执行循环时,出现错误Invalid argument supplied for foreach(),但我真的不知道为什么。我有一个form应该可以上传多个文件的地方这是我到目前为止所得到的:use App\SingleApplication;use App\SingleApplicationFile;$application = SingleApplication::create([ 'email' => request()->email, 'name' => request()->name, ...// more fields]);$allowedfileExtension = ['pdf', 'jpg', 'png', 'docx'];$files = request()->has('attachment');if ($files) { foreach ($files as $file) { $filename = $file->getClientOriginalName(); $extension = $file->getClientOriginalExtension(); $filesize = $file->getSize(); $check = in_array($extension, $allowedfileExtension); if ($check) { foreach ($file as $att) { $filename = Storage::disk('local')->put('attachments', request()->file($att)); SingleApplicationFile::create([ 'files_id' => $application->id, 'single_application_id' => $application->id, 'attachment' => $filename, 'attachment_name' => $extension, 'attachment_size' => $filesize, ]); } } }}那么,我在这里做错了什么?
1 回答
潇潇雨雨
TA贡献1833条经验 获得超4个赞
这是一个布尔值
$files = request()->hasFile('attachment'); // return if has file not array of files
你应该得到文件
$files = request()->file('attachment'); // returns array of files
或者您可以将条件更改为
$hasfiles = request()->hasFile('attachment');
if ($hasfiles) {
$files = request()->file('attachment');
// your rest code
注意:文件检查应该使用 hasFile 来完成,因为文件和其他字段是不同的。
- 1 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消