[Laravel] Amazon S3
mardi 23 janvier 2018Depuis 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.