Flysystem PDO Database Adapter
, (*1)
PDO database adapter for Flysystem filesystem abstraction. No additional dependencies, only PDO extension required., (*2)
Installation
composer require integral/flysystem-pdo-adapter
Database Configuration
At the beginning you have to create a table that will be used to store files., (*3)
SQL table schema examples for MySQL and SQLite are presented below., (*4)
MySQL, (*5)
CREATE TABLE files (
id int(11) NOT NULL AUTO_INCREMENT,
path varchar(255) NOT NULL,
type enum('file','dir') NOT NULL,
contents longblob,
size int(11) NOT NULL DEFAULT 0,
mimetype varchar(127),
timestamp int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (id),
UNIQUE KEY path_unique (path)
);
Usage
Create an adapter by passing a valid PDO
object and table name as constructor arguments:, (*6)
MySQL, (*7)
// http://php.net/manual/pl/ref.pdo-mysql.connection.php
$pdo = new PDO('mysql:host=hostname;dbname=database_name', 'username', 'password');
$adapter = new PDOAdapter($pdo, 'files');
SQLite, (*8)
// http://php.net/manual/pl/ref.pdo-sqlite.connection.php
$pdo = new PDO('sqlite:/absolute/path/to/database.sqlite');
$adapter = new PDOAdapter($pdo, 'files');
PostgreSQL, (*9)
// http://php.net/manual/pl/ref.pdo-pgsql.php
$pdo = new PDO('pgsql:host=localhost;port=5432;dbname=testdb;user=bruce;password=mypass');
$adapter = new PDOAdapter($pdo, 'public.files');
Then simply pass the created adapter to \League\Flysystem\Filesystem
:, (*10)
$filesystem = new Filesystem($adapter);
Done! At this point the $filesystem
is ready to use., (*11)
Note
This implementation emulates a tree structured filesystem, therefore some of the operations
(like renaming or deleting a folder) produce quite a lot of database queries, which may result
in a poor performance for some scenarios., (*12)