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

Laravel 5.7 在控制器中循环时为 foreach() 提供的参数无效

Laravel 5.7 在控制器中循环时为 foreach() 提供的参数无效

PHP
Qyouu 2021-06-16 13:42:42
当我尝试在控制器内部执行循环时,出现错误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 来完成,因为文件和其他字段是不同的。


查看完整回答
反对 回复 2021-06-25
  • 1 回答
  • 0 关注
  • 190 浏览

添加回答

举报

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