En algunos de nuestros proyectos podemos encontrarnos en la situación de querer utilizar diferentes tipos de sistemas de ficheros bien sea almacenamiento local, Amazon S3, FTP..., en estos casos es conveniente abstraer el uso del sistema de ficheros que nos permita modificar la configuración del sistema de ficheros sin modificar el código, en symfony tenemos disponible el paquete OneupFlysystemBundle que realiza justamente esa función.
Instalación y configuración
Instalamos el paquete:
composer require oneup/flysystem-bundle
Tenga en cuenta que si quiere utilizar adaptadores para algunos sistemas de ficheros tendrá que instalar dependencias adicionales como league/flysystem-aws-s3-v3 para utilizar Amazon S3
Asegúrese que el bundle está registrado
En config/packages/oneup_flysystem.yaml configuraremos nuestros sistemas de ficheros
oneup_flysystem: adapters: my_adapter: local: location: "%kernel.root_dir%/cache" filesystems: my_filesystem: adapter: my_adapter visibility: private # optional directory_visibility: private # optional
Hay dos conceptos importantes:
- adapters: Realizan la integración con el sistema de ficheros
- filesystems: Proporcionan los servicios a la aplicación
Uso
Una vez instalado y configurado tendremos tantos servicios disponibles como filesystems hemos configurado con el nombre oneup_flysystem.%s_filesystem donde %s es la clave de tu filesystem en nuestro ejemplo sería oneup_flysystem.my_filesystem_filesystem, ese servicio es de tipo \League\Flysystem\Filesystem y tiene los métodos habituales para manejar ficheros.
Comentarios
Añadir nuevo comentario