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

当我尝试在控制器内部执行循环时,出现错误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,

          ]);

        }

     }

  }

}

那么,我在这里做错了什么?


Qyouu
浏览 192回答 1
1回答

潇潇雨雨

这是一个布尔值$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 来完成,因为文件和其他字段是不同的。
打开App,查看更多内容
随时随地看视频慕课网APP