L'ensemble des données est stocké dans une base de données, images comprises, cela nous a ammené à utiliser PostgreSQL (et non MySQL) pour ses possibilités de streaming sur les blobs.
Exemple sous debian :
apt install postgresql
dans /etc/postgresql/<XX>/main/pghba.conf ajout de :
host all all 127.0.0.1/32 password
Redémarrage de postgresql
systemctl restart postgresql.service
Création de la base :
su postgres psql create database esupsignature; create USER esupsignature with password 'esup'; grant ALL ON DATABASE esupsignature to esupsignature;
L'application a été développée avec la fonction de lecture/écriture des blobs dans une transaction par streaming de PostgreSQL.
Pour une bonne gestion des blob de cette application, il faut ajouter dans PostgreSQL un trigger sur la base de données sur la table big_file. La fonction lo_manage est nécessaire ici.
Sous debian :
apt-get install postgresql-contrib
Puis la création de l'extension lo se fait via un super-user:
psql \c esupsignature CREATE EXTENSION lo;
Et enfin ajout du trigger, ceci après avoir démarré un première fois esup-signature pour que les tables soit crées :
CREATE TRIGGER t_big_file BEFORE UPDATE OR DELETE ON big_file FOR EACH ROW EXECUTE PROCEDURE lo_manage(binary_file);
CF https://www.postgresql.org/docs/9.4/static/lo.html