[Laravel] Amazon S3

mardi 23 janvier 2018

Depuis Laravel on peut aussi installer des librairies custom, par exemple dans mon cas une libraire qui gère la gestion de sauvegarde sous amazon s3.

D’abord il faut installer le package amazon s3 via composer.

composer require league/flysystem-aws-s3-v3 ~1.0

Ensuite nous mettons les accès dans le fichier .env et nous avons un nouveau objet de type storage s3 dans Laravel.

AWS_KEY= XXXXXXXXXXX
AWS_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
AWS_REGION=us-east-1
AWS_BUCKET=XXXXXXXXXXXXXXXXXXXXXX
AWS_FOLDER=XXX

Exemple de deux méthodes utiles

    public function uploadS3($file,$userid) {
        $directory_user=env('AWS_FOLDER')."/".$userid."/";
        if(!Storage::disk('s3')->has($directory_user)) {
            Storage::makeDirectory($directory_user);
        }
        $filePath = $directory_user.$this->attributes['filename'];
        $t = Storage::disk('s3')->put($filePath, file_get_contents($file), 'public');
        $path = Storage::disk('s3')->url($filePath);
        $this->attributes['path'] = $path;
        return $path;
    }
    
    public function removeFromS3($filename,$userid){
        $filePath = env('AWS_FOLDER')."/".$userid."/".$filename;
        if(Storage::disk('s3')->exists($filePath)){
            if(Storage::disk('s3')->delete($filePath)){
                return true;
            }
        }
        return false;
    }

Attention de gérer correctement aussi vos accès et permissions dans la console d’AMAZON S3.

Tags: AMAZON S3 , Laravel , PHP