【问题标题】:Cannot use object of type Illuminate\Http\UploadedFile as array不能将 Illuminate\Http\UploadedFile 类型的对象用作数组
【发布时间】:2021-08-31 07:43:39
【问题描述】:

我尝试发送附件文件,但我收到了

不能使用 Illuminate\Http\UploadedFile 类型的对象作为数组

我使用 laravel 5.4

有人知道我为什么会收到这个错误吗?

(我没有将文件上传到目录,我只是想发送在我的控制器上请求的文件)

希望有人可以提供帮助,最好的问候:)

这里是我的控制器:

public function postSendMassive(Request $request){

        $files = $request->file('uploads');

        $emails = Structure::where('type_structure_id', 4)->pluck('adresse_email_structure');

        $subject = $request->subject;
        $bodyMessage = $request->texte;

        foreach($files as $file) {
            $files[] = [
                'file' => $file->getRealPath(),
                'options' => [
                    'mime' => $file->getClientMimeType(),
                    'as'    => $file->getClientOriginalName()
                ],
            ];
        }

        Mail::to('test@gmaIL.com')->send(new MassiveEmail($subject , $bodyMessage , $files));

        return back()->with('status', "Email envoyé");

    }

这里是我的构建邮件:

public function build()
    {

        $subject = $this->subject;
        $bodyMessage = $this->bodyMessage;
        $files = $this->files;

        $email =  $this->markdown('email.MassiveMail',compact('bodyMessage'))
            ->subject($subject.'-'.'FFRXIII Licences & Compétitions');


        foreach($this->files as $file) {
            $email->attach($file['file'],$file['options']);
        }

        return $email;
    }

【问题讨论】:

    标签: laravel


    【解决方案1】:

    这是因为 $request->file('uploads') 返回一个对象,而您正在尝试使用 foreach 对其进行迭代

    如果您想上传多个文件,请确保您正在执行以下操作:

    <input type="file" name="uploads[]" multiple />
    

    并遍历上传的文件:

    foreach ($request->uploads as $file)
    

    【讨论】:

    • 你拯救了我的一天!有用 !!!!!问题出在我的foreach上!!!!非常感谢!!!!!!!!!
    【解决方案2】:

    这行得通!

        if($request->hasFile('files')){
            
            foreach ($request->files as $file) {
                
                //get file name with extenstion
                $fileNameWithExt = $file->getClientOriginalName();
    
                //get just filename
                $fileName = pathinfo($fileNameWithExt, PATHINFO_FILENAME);
    
                //get extension
                $extension = $file->getClientOriginalExtension();
    
                //file to store
                $fileNameToStore = $fileName.'_'.time().'.'.$extension;
    
                //upload to store
                $path = $file->storeAs('${your_storage_path}', $fileNameToStore);
    
                
            }    
            
        }
    

    【讨论】:

    • 为什么在 foreach 循环开始时返回?如果这是故意的,您可以删除它之后的任何代码。
    • @KarlHill 感谢您指出这一点,这不是故意的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 2019-05-27
    • 2021-08-31
    • 2012-03-29
    • 2011-10-12
    相关资源
    最近更新 更多