首页 > 解决方案 > Laravel 7 - 将多个文件附加到 Mailables

问题描述

如何将多个文件附加到 laravel 7 mailable?错误:路径不能为空

我已经在堆栈上搜索了文档以及各种搜索词,但无济于事。任何帮助将不胜感激。

myController 和存储文件

public function imageSave($filex,$destination){

        $ext=$filex->getClientOriginalExtension();
        $name = $filex->getClientOriginalName();
        $mainFilename =$name.'_'.time().'.'.$ext;
        $filex->move($destination, $mainFilename);

        return $mainFilename;
}

public function store(Request $request)
{

    $this -> validertor( $request , [
        'rip' => 'required' ,
        'rip. *' => 'mimes: jpeg, png, jpg, gif, svg | max: 2048',
        'filep' => 'required' ,
        'filep. *' => 'mimes: jpeg, png, jpg, gif, svg | max: 2048',
        'fishea' => 'required' ,
        'fishea. *' => 'mimes: jpeg, png, jpg, gif, svg | max: 2048'
]);

        $data[] = [
            'filep' => $request->filep->getRealPath(),
            [
                'mime' => $request->filep->getClientMimeType(),
                'as' => $request->filep->getClientOriginalName()
            ],
            'rip' => $request->rip->getRealPath(),
            [
                'mime' => $request->rip->getClientMimeType(),
                'as' => $request->rip->getClientOriginalName()
            ],
            'fishea' => $request->fishea->getRealPath(),
            [
                'mime' => $request->fishea->getClientMimeType(),
                'as' => $request->fishea->getClientOriginalName()
            ],
        ];


    if ($request->hasFile('filep') && $request->hasFile('rip') && $request->hasFile('fishea')) {
        $filep = $this->imageSave($request->filep,'uploads/cin/');
        $rip = $this->imageSave($request->rip,'uploads/rip/');
        $fishea = $this->imageSave($request->fishea,'uploads/anthropo/');

        // Required validation
        $contact = new Contact();

        $contact->name = $request->name;
        $contact->adresse = $request->adresse;
        $contact->ville = $request->ville;
        $contact->num = $request->num;


        $contact->filep = $filep;
        $contact->rip   =  $rip;
        $contact->fishea = $fishea;
     }

    $admin_email = 'contact@admin_email.com';
    Mail::to($admin_email)->send(new SendMailP($data));
    session()->flash('success', 'Thank you! ');
    $contact ->save();
    return redirect('contact');
}

private function validertor(Request $request, array $array)
{
}

}

在 SendMai 中添加 dd($data[]) 时

     public function build()
    {
dd($this->data);
        $data = $this->data;
        $mail = $this->subject('[organisation]' . " " . " Sujet «" . "»")
       ->markdown('frontend.contact.mail.contact-form', compact('data'));
        // $attachments is an array with file paths of attachments
        foreach($data as $filePath => $fileParameters){
            $mail->attach($filePath, $fileParameters);
        }
        return $mail;
    }
}

构建方法中的 dd($this->data):

array:1 [▼
  0 => array:6 [▼
    "filep" => "C:\wamp64\tmp\php71B9.tmp"
    0 => array:2 [▼
      "mime" => "image/png"
      "as" => "crm.png"
    ]
    "rip" => "C:\wamp64\tmp\php71BA.tmp"
    1 => array:2 [▼
      "mime" => "image/png"
      "as" => "logo-1.png"
    ]
    "fishea" => "C:\wamp64\tmp\php71BB.tmp"
    2 => array:2 [▼
      "mime" => "image/png"
      "as" => "smartphone-1.png"
    ]
  ]
]

标签: laravel

解决方案


推荐阅读