Transformation des medias créés dans ODKCollect en fichiers sur le serveur

Objectif

Écrire dans le système de fichier du serveur, les fichiers stockés sous forme de binaire dans PotgreSQL. La méthode est générique et fonctionne si de nouveaux formulaires sont créés ou si certains sont supprimés.

Write to the server’s file system, files stored as binary in PotgreSQL. The method is generic and works if new forms are created or if some are deleted.

Ressources

https://github.com/opendatakit/aggregate/issues/164#issuecomment-347390275

https://stackoverflow.com/questions/38900823/postgres-find-all-rows-in-database-tables-matching-criteria-on-a-given-column

Principe

Une table liste les objets binaires stockés dans la base de données ODK (toutes les tables dont le nom se termine par « BLB » et ne commence par par un «  » (tables système d’Aggregate)

Elle stocke aussi le nom que nous souhaitons donner au fichier (à partir de champs de métadonnées d’Aggregate « _LAST_UPDATE_DATE » et « UNROOTED_FILE_PATH » Et enfin un entier mis à 1 quand le fichier a été généré dans sur le disque

Pour générer les fichiers nous faisons appel à la fonction lo_export

Les fichiers sont créés dans un répertoire sur lequel postgres à le droit d’écrire. Ce répertoire est servi sur le web par un serveur de fichier (minio)

Les téléphones actuels peuvent facilement créer des images de 15 Mo… L’option proposée dans xlsform permettant de réduire la talle des images en définissant un nombre maximum de pixel pour le plus grand côté de l’image sera intéressante : https://docs.opendatakit.org/form-question-types/?highlight=select%20one#scaling-down-images

A table lists the binary objects stored in the ODK database (all tables whose name ends with « BLB » and does not begin with a «  » (Aggregate system tables) It also stores the name we want to give to the file (from Aggregate’s « _LAST_UPDATE_DATE » and « UNROOTED_FILE_PATH » metadata fields) And finally an integer set to 1 when the file was generated in on the disk

To generate the files we use the lo_export function

Files are created in a directory on which postgres have the right to write. This directory is served on the web by a file server (minio)

Current phones can easily create 15MB images… The option offered in xlsform to reduce image’s size will be interesting : https://docs.opendatakit.org/form-question-types/?highlight=select%20one#scaling-down-images