Magento2 Module to integrate Flysystem and filesystem abstraction for PHP
In the open source community there is a special quote, that says:
“You are what you give“
And because of that we decided to give back an open source Magento2 module that integrates Flysystem to the Magento Community.
What is Flysystem?
Flysystem is a filesystem abstraction layer, that was developed by Frank de Jonge and is used in Laravel. It gives you an interface for many different filesystems e.g. AWS S3, Dropbox, SFTP, Rackspace, Memory and a lot more. With this layer you are able to swap out filesystems without application wide rewrites.
Why did we create the magento2 flysystem module?
More or less with every project you get to the state where the customer wants to upload media files. Then you have to create a SFTP-Account, tell the customer how to upload and later use the files inside Magento. Or the customer has the files on his computer and is uploading the files three times for different products, categories, pages and so on. If you worked on projects, you know these kind of problems.
We decided to build a module with which you can select all files in one place. It does not matter if you need the image for products or catalog pages. And we also wanted to use this file pool in our custom modules on code base.
After some research we found Flysystem. The idea about a filesystem abstraction layer wasn´t really new to us, but we hadn´t found a performant (7.82 scrutinizer) and small library (around 41kb) before.
Actual feature set of Magento2 Flysystem module?
- Integrate Flysystem into Magento2
- Prepared to easily add new Flysystem adapters
- Local, ftp and null/test Adapter included in the module
- Integrate image modal for product and category uploads
- Separate media page for fast access to Flysystem media files
- ACL configuration for insert, upload, delete files and for create, delete folders and more
- Complete UnitTested Module, Documentation in Wiki Pages
What are the plans for the future?
We need the Magento Community to help use extending this module and get configurations for all Flysystem adapters into Magento2. We want to use the filesystem abstraction layer in pages, blocks and so on. More or less everywhere, where the customer can input or change files (one file-pool). It would also be great if we find other module developers who are interested in using Magento2 Flysystem in their modules.
How you can start?
You can install the module by using composer. Check out the Installation & Configuration Guide. A complete documentation you can find on github wiki pages. If problems occur or you will find a bug, please create an issue on github.
At the end I have to say … big thanks to my colleague Robin Homberg who created this awesome Magento2 Flysytem module. And last but not least to Frank de Jonge for creating Flysystem.