Symfony. Subiendo archivos con Flysystem a S3

Introducción a la librería Flysystem y cómo configurarla para subir archivos a cualquier sistema de almacenamiento: S3, Azure…

Image for post
Image for post
Photo by Lÿv Jaan on Unsplash

0. Instalación y configuración de AWS SDK PHP

composer require aws/aws-sdk-php
Aws\S3\S3Client:  arguments:    - version: 'latest'      region: '%env(AWS_S3_BUCKET_REGION)%'      credentials:        key: '%env(AWS_S3_ACCESS_ID)%'        secret: '%env(AWS_S3_ACCESS_SECRET)%'

1. Instalación de OneupFlysystemBundle

composer require oneup/flysystem-bundle
oneup_flysystem:
adapters:
my_adapter:
local:
directory: "%kernel.root_dir%/cache"

filesystems:
my_filesystem:
adapter: my_adapter
visibility: private

Configurando S3 con OneupFlysystemBundle de Symfony

composer require league/flysystem-aws-s3-v3
oneup_flysystem:  adapters:    default_adapter:      awss3v3:        client: Aws\S3\S3Client        bucket: '%env(AWS_S3_BUCKET_NAME)%'  filesystems:    default_filesystem:      adapter: default_adapter

2. Subiendo archivos a S3

Image for post
Image for post
services:
League\Flysystem\FilesystemInterface: '@oneup_flysystem.default_filesystem_filesystem'

3. Mostrando nuestros archivos de S3

Image for post
Image for post
parameters:
app.uploads_base_url: 'https://%env(AWS_S3_BUCKET_NAME)%.s3.amazonaws.com'
App\Service\Utils\FileUploader:  arguments:    $publicAssetBaseUrl: '%app.uploads_base_url%'

4. Borrando archivos de S3

$this->filesystem->delete($path);

Conclusiones

Apóyame en Patreon

¿Quieres recibir más artículos como este?

Written by

Entre paseo y paseo con Simba desarrollo en Symfony y React

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store