lundi 4 mai 2020

Swift10Exception: Unable to open file for reading laravel 5.8

Currently working on a platform that allows people send files to people's mail, on upload of the files, the file get stored in Amazon S3 bucket then retrieved to be sent to the email of the uploader. The issue I am having is anytime I tried to retrieve the file from Amazon S3 bucket, I get this error: "Swift10Exception: Unable to open file for reading".

Document Upload Controller

public function store(Request $request)
    {
        //
        $this->validate($request,[
            'recipient_email' => 'required',
            'file' => 'required'
        ]);

        $files = $request['file'];
        $id = mt_rand();
        if($files){
            foreach($files as $file) {
                $docName = $file->getClientOriginalName();
                $originalName = pathinfo($docName,PATHINFO_FILENAME);
                $extension = $file->getClientOriginalExtension();
                $filename = mt_rand().'.'.$extension;
                $filePath = 'documents/' . $id .'/'.$filename;
                Storage::disk('s3')->put($filePath, file_get_contents($file), 'public');
                $data[] = $originalName;
            }     
        }
        $name = implode(',' , $data);
        $document = new Document();
        $document->file = $name;
        $document->title = $name;
        $document->message = $request['message'];
        $document->user_id = Auth::user()->id;
        $document->transaction_id = $id;
        $document->recipient_email = $request['recipient_email'];
        $document->save();
        $files = Storage::disk('s3')->files('documents/'. $id);
        $sender = Auth::user()->email;
        $message = $request['message'];


        Mail::to($request['recipient_email'])->send(new SentFiles($files, $sender, $message));

        return redirect('/dashboard')->with('success', 'Document Sent and Saved Successfully!');

    }

App\Mail\SentFiles.php

public $attachment;
    public $sender;
    public $content;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($attachment, $sender, $content)
    {
        //
        $this->attachment = $attachment;
        $this->sender = $sender;
        $this->content = $content;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {


        $email = $this->view('emails.attached')
                ->from($this->sender);
                foreach ($this->attachment as $item) {

                    $email->attach($item);

                }

        return $email;
    }


via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire